MySQL默认仅允许本地连接,若需要让其他服务器或本地客户端远程访问MySQL数据库,需要完成配置修改、权限调整、网络规则适配等一系列操作,不同MySQL版本的操作细节略有差异,但核心逻辑一致。

操作步骤
1. 修改MySQL配置文件
首先需要修改MySQL的配置文件,关闭仅监听本地地址的限制。不同系统下配置文件路径不同:
- Linux系统:通常路径为
/etc/mysql/mysql.conf.d/mysqld.cnf或者/etc/my.cnf - Windows系统:通常路径为MySQL安装目录下的
my.ini文件
找到配置文件中的bind-address配置项,默认值为127.0.0.1,将其修改为0.0.0.0,表示允许所有IP地址连接,或者直接注释掉这一行。修改完成后重启MySQL服务使配置生效。
Linux系统重启命令示例:
# 适用于使用systemctl管理的系统 sudo systemctl restart mysql # 适用于使用service管理的系统 sudo service mysql restart
Windows系统可以在服务管理面板中找到MySQL服务,右键选择重启,或者在命令行执行:
net stop mysql net start mysql
2. 调整用户远程连接权限
配置文件修改完成后,还需要给对应的MySQL用户授予远程连接权限。默认情况下MySQL的用户仅允许本地登录,需要手动修改权限。
首先登录MySQL本地客户端:
mysql -u root -p
输入密码后进入MySQL命令行,执行权限修改语句。如果要允许root用户从任意IP远程连接,可以执行以下语句:
-- 创建允许远程连接的root用户(如果用户不存在) CREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; -- 授予所有权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; -- 刷新权限使配置生效 FLUSH PRIVILEGES;
如果只需要允许特定IP段连接,可以把%替换为对应的IP地址,比如192.168.0.%表示允许192.168.0网段的所有IP连接。
如果是MySQL 8.0及以上版本,默认的认证插件是caching_sha2_password,部分旧客户端可能不支持,可以修改用户的认证插件为mysql_native_password:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;
3. 开放服务器防火墙端口
如果服务器开启了防火墙,还需要开放MySQL默认的3306端口,否则远程请求会被防火墙拦截。
Linux系统使用ufw防火墙的开放命令:
sudo ufw allow 3306/tcp sudo ufw reload
Linux系统使用firewalld防火墙的开放命令:
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload
Windows系统可以在防火墙高级设置中,新建入站规则,选择端口,开放TCP协议的3306端口,允许所有连接即可。
验证远程连接
完成以上所有步骤后,可以在远程客户端测试连接。比如在另一台服务器的命令行执行:
mysql -h 目标服务器IP -u root -p
输入密码后如果能正常进入MySQL命令行,说明远程连接已经成功开启。
注意事项
- 开启远程连接后建议设置复杂的数据库密码,避免被恶意破解
- 生产环境不建议直接开放root用户的远程权限,可以创建专用的业务用户,仅授予对应数据库的权限
- 如果服务器有安全组规则,还需要在安全组中添加3306端口的入站允许规则
- 修改配置文件前建议先备份原文件,避免修改错误导致MySQL无法启动