> 技术文档 > MySQL如何开启远程访问权限_mysql开启远程访问

MySQL如何开启远程访问权限_mysql开启远程访问

要在MySQL中开启远程访问权限,需完成以下步骤:

1. 登录MySQL服务器

mysql -u root -p# 输入root密码进入MySQL命令行

2. 创建允许远程访问的用户(或修改现有用户)

方案1:创建新用户并授权
-- 创建用户(\'username\'替换为用户名,\'password\'替换为密码,\'remote_ip\'替换为远程客户端IP或\'%\'允许所有IP)CREATE USER \'username\'@\'remote_ip\' IDENTIFIED BY \'password\';-- 授予权限(建议按需授权,此处示例授予所有数据库的完全权限)GRANT ALL PRIVILEGES ON *.* TO \'username\'@\'remote_ip\' WITH GRANT OPTION;-- 刷新权限FLUSH PRIVILEGES;
方案2:修改root用户允许远程访问(不推荐,存在安全风险)
-- 更新root用户的host为\'%\'(允许任意IP)UPDATE mysql.user SET Host=\'%\' WHERE User=\'root\' AND Host=\'localhost\';-- 刷新权限FLUSH PRIVILEGES;

3. 修改MySQL配置文件

  • 找到配置文件

    • Linux/etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf

    • WindowsC:\\ProgramData\\MySQL\\MySQL Server X.X\\my.ini

  • 修改配置

[mysqld]bind-address = 0.0.0.0 # 允许所有IP连接(默认值为127.0.0.1,仅限本地)

4. 重启MySQL服务

  • Linux:

    sudo systemctl restart mysql # Ubuntu/Debiansudo systemctl restart mysqld # CentOS/RHEL
  • Windows:

    • 通过服务管理器重启 \"MySQLXX\" 服务。


5. 开放防火墙端口(默认3306)

  • Linux (ufw):

    sudo ufw allow 3306/tcpsudo ufw reload
  • Linux (firewalld):

    sudo firewall-cmd --permanent --add-port=3306/tcpsudo firewall-cmd --reload
  • Windows:

    • 控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则(端口3306)。


6. 验证远程连接

# 从另一台机器测试连接(替换IP、用户名、密码)mysql -h  -u username -p

常见问题排查

1. 错误:ERROR 2003 (HY000): Can\'t connect to MySQL server
  • 原因:防火墙未放行端口或MySQL未监听外网。

  • 解决

    # 检查端口监听状态netstat -tuln | grep 3306# 应显示:0.0.0.0:3306 或 :::3306
2. 错误:ERROR 1130 (HY000): Host \'xxx.xxx.xxx.xxx\' is not allowed
  • 原因:用户权限未正确配置。

  • 解决

    -- 检查用户权限SELECT Host, User FROM mysql.user;-- 确保目标IP或\'%\'存在授权记录
3. 错误:ERROR 1045 (28000): Access denied
  • 原因:密码错误或用户无权限。

  • 解决:确认用户名、密码及授权IP是否匹配。


安全建议

  1. 最小权限原则:按需授予权限(如SELECT, INSERT而非ALL PRIVILEGES)。

  2. 限制访问IP:避免使用\'%\',指定具体IP或网段。

  3. 启用SSL加密(可选):

    ALTER USER \'username\'@\'remote_ip\' REQUIRE SSL;

通过以上步骤,即可安全地开启MySQL远程访问权限。