远程无法访问 mysql 数据库 需检查三方面:1. 用户权限,确保用户允许从远程主机连接;2. MySQL配置文件 中 bind-address 设为 0.0.0.0 或注释掉;3. 防火墙 及云安全组开放 3306端口。

远程无法访问 MySQL 数据库,通常是因为权限设置、网络配置或 防火墙 限制导致的。下面从几个关键方面逐一排查和解决。
检查 MySQL 用户权限
MySQL 默认只允许本地登录,需要为用户授予远程访问权限。
1. 登录到数据库服务器,使用 root 或有管理权限的账号进入 MySQL:
mysql -u root -p
2. 查看当前用户的访问权限:
select host, user FROM mysql.user WHERE user = '你的用户名';
3. 如果用户的 host 是 localhost 或 127.0.0.1,则不能远程连接。需添加或修改权限:
GRANT ALL PRIVILEGES ON *.* TO '你的用户名'@'%' IDENTIFIED BY '密码';
FLUSH PRIVILEGES;
说明: 使用 ‘%’ 表示允许从任意 IP 连接,生产环境建议指定具体 IP 更安全。
确认 MySQL 监听地址
MySQL 配置文件 可能绑定了本地地址,导致不接受远程连接。
1. 打开 MySQL 配置文件(通常位于):
2. 查找 bind-address 这一行:
bind-address = 127.0.0.1
3. 修改为:
bind-address = 0.0.0.0
# bind-address = 127.0.0.1
4. 保存后重启 MySQL 服务:
sudo systemctl restart mysql 或 sudo service mysqld restart
检查防火墙设置
即使数据库允许远程连接,系统防火墙也可能拦截请求。
1. 确保 3306 端口(MySQL 默认端口)已开放:
如果是 Ubuntu 使用 ufw:
sudo ufw allow 3306
如果是 CentOS 使用 firewalld:
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
2. 如果服务器在云平台(如 阿里云 、 腾讯 云、AWS),还需在安全组中放行 3306 端口。
测试连接
完成上述配置后,从远程机器使用客户端测试:
mysql -h 服务器 IP -u 用户名 -p
若仍无法连接,可使用 telnet 检查端口是否通:
telnet 服务器 IP 3306
如果连接失败,说明网络或防火墙仍有问题;如果成功但登录失败,回到权限部分检查。
基本上就这些。只要用户权限、绑定地址、防火墙三者都正确配置,远程访问就能正常工作。注意安全,避免将 root 账户开放给公网。


