当前位置:首页 > Linux > 正文

Linux MySQL远程连接怎么设置?

配置MySQL允许远程连接需三步:修改配置文件设置 bind-address=0.0.0.0;登录MySQL执行 GRANT ALL ON *.* TO 'user'@'特定IP' IDENTIFIED BY '密码' WITH GRANT OPTION;;最后刷新权限 FLUSH PRIVILEGES;并开放服务器3306端口防火墙。

前提条件

  1. MySQL服务器已安装
    确保MySQL服务运行正常:

    systemctl status mysql   # 或 mysqld
  2. 网络与防火墙配置

    • 客户端与服务器网络互通(可通过ping测试)。
    • 开放MySQL默认端口(3306):
      sudo ufw allow 3306/tcp   # Ubuntu/Debian
      # 或
      sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload  # CentOS/RHEL

配置MySQL远程访问(服务端操作)

步骤1:修改MySQL配置文件

  1. 编辑配置文件(路径根据系统不同):
    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf  # Ubuntu/Debian
    sudo nano /etc/my.cnf                         # CentOS/RHEL
  2. 找到bind-address项并修改:
    bind-address = 0.0.0.0   # 允许所有IP访问(生产环境建议限制IP)
    # 或注释此行: #bind-address = 127.0.0.1

步骤2:创建远程访问用户并授权

  1. 登录MySQL:

    mysql -u root -p
  2. 创建专用用户(避免使用root)

    CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!';  # '%'允许所有IP

    安全建议:将替换为客户端IP(如'192.168.1.100')以限制访问源。

    Linux MySQL远程连接怎么设置?  第1张

  3. 授权用户访问数据库

    GRANT ALL PRIVILEGES ON target_db.* TO 'remote_user'@'%';  # 授权特定数据库
    -- 或授权所有数据库(谨慎使用):
    -- GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%';
  4. 刷新权限:

    FLUSH PRIVILEGES;

步骤3:重启MySQL服务

sudo systemctl restart mysql   # 或 mysqld

客户端测试远程连接

在另一台机器使用MySQL客户端连接:

mysql -h [服务器IP] -u remote_user -p
  • 输入密码后成功进入即表示配置正确。

安全加固建议

  1. 最小权限原则
    • 仅授权用户必要的数据库和操作(如SELECT, INSERT而非ALL PRIVILEGES)。
  2. 限制访问IP
    • 创建用户时指定客户端IP(如'remote_user'@'192.168.1.100')。
  3. 使用SSH隧道(推荐)
    ssh -L 3306:localhost:3306 user@mysql-server-ip

    客户端通过mysql -h 127.0.0.1 -u remote_user -p连接,数据加密传输。

  4. 定期更新密码
    使用强密码(字母+数字+符号,长度≥12位)。

常见问题解决

  • 错误1130: Host ‘xxx’ is not allowed
    检查用户授权IP是否包含客户端IP(SHOW GRANTS FOR 'remote_user')。

  • 错误2003: Can’t connect to MySQL server

    1. 确认防火墙开放3306端口。
    2. 检查MySQL配置文件bind-address是否设置为0.0.0
    3. 网络路由是否畅通(telnet [服务器IP] 3306测试端口)。
  • 连接缓慢
    my.cnf中增加:

    [mysqld]
    skip-name-resolve   # 禁用DNS反向解析

远程连接MySQL是常见需求,但需严格遵循安全规范,通过绑定IP限制、最小权限授权和SSH隧道,可显著降低风险,定期审计用户权限并更新密码是维护数据库安全的关键措施。

引用说明:本文操作基于MySQL 8.0官方文档及Linux安全最佳实践,配置路径可能因版本差异略有不同,防火墙命令参考Ubuntu/CentOS官方手册,MySQL权限管理详见MySQL GRANT语法。

0