要实现MySQL远程访问,需同时修改配置文件绑定地址为0.0.0.0、创建授权远程用户并刷新权限、开放3306端口防火墙及云安全组,缺一不可。

MySQL 默认只允许本地连接,要实现远程访问,需同时修改服务端配置、用户权限和系统防火墙设置。单独改某一项通常无法成功。
1. 修改 MySQL 配置文件,允许监听外部地址
MySQL 服务默认绑定在 127.0.0.1(仅本地),需改为监听所有 IP 或指定 IP:
- 编辑配置文件(Linux 常为 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/my.cnf;Windows 为 my.ini)
- 找到 bind-address 行,将其改为:
bind-address = 0.0.0.0(监听所有 IPv4 地址)
或指定服务器公网/内网 IP(如 bind-address = 192.168.1.100) - 保存后重启 MySQL 服务:
sudo systemctl restart mysql(Ubuntu/Debian)
sudo systemctl restart mysqld(CentOS/RHEL)
2. 创建或授权远程访问用户
root 用户默认可能禁止远程登录,建议新建专用用户并赋权:
- 登录 MySQL:
mysql -u root -p - 创建新用户(示例用户名 remote_user,密码 SecurePass123,允许从任意主机连接):
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'SecurePass123'; - 赋予必要权限(如只读可改用 SELECT):
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; - 刷新权限:
FLUSH PRIVILEGES;
⚠️ 注意:'%' 表示任意主机,生产环境建议限定为具体 IP(如 'remote_user'@'192.168.1.50')以提升安全性。
3. 开放服务器防火墙端口
MySQL 默认使用 3306 端口,需确保该端口对外可达:
- Ubuntu/Debian(UFW):
sudo ufw allow 3306
sudo ufw reload - CentOS/RHEL(firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload - 云服务器(如阿里云、腾讯云)还需在安全组中手动放行 3306 端口
4. 连接测试与常见问题
在远程客户端执行连接命令验证:
- 命令示例:
mysql -h 服务器公网IP -P 3306 -u remote_user -p - 若提示 ERROR 2003 (HY000): Can't connect to MySQL server,检查:
— MySQL 是否真正监听 0.0.0.0(运行 netstat -tuln | grep :3306)
— 防火墙/安全组是否生效
— 用户 host 是否匹配(SELECT Host, User FROM mysql.user;) - 若提示 Access denied,重点核查用户权限和密码是否正确,注意大小写及特殊字符转义










