在使用宝塔面板管理服务器时,很多用户会遇到连接远程数据库失败的情况,这类问题通常和MySQL远程访问权限配置、服务器端口放行设置有关,下面我们一步步梳理排查和解决方法。

一、排查MySQL远程访问权限是否开启
MySQL默认只允许本地连接,需要手动开启远程访问权限,才能在宝塔面板中连接其他服务器的数据库。
1. 登录远程MySQL服务器修改权限
首先登录你要连接的远程数据库所在的服务器,进入MySQL命令行,执行以下命令查看当前用户权限:
-- 查看所有用户的host配置,host为localhost表示仅允许本地连接 SELECT user, host FROM mysql.user;
如果需要给指定用户开启远程访问权限,可以执行以下命令,将username替换为你的数据库用户名,password替换为对应密码:
-- 允许指定用户从任意IP连接MySQL GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; -- 刷新权限使配置生效 FLUSH PRIVILEGES;
如果是宝塔面板自带的MySQL,也可以直接在宝塔面板的数据库页面,找到对应数据库,点击权限,选择所有人或者指定允许的IP段,保存后权限会自动生效。
2. 检查MySQL配置文件是否限制远程连接
部分MySQL配置文件中会绑定本地地址,导致远程连接被拦截,需要修改配置文件。在宝塔面板中找到软件商店,点击MySQL的配置修改,找到bind-address配置项:
-- 原配置如果是以下行,需要注释或者修改 bind-address = 127.0.0.1 -- 修改为允许所有IP连接,或者直接注释掉这一行 bind-address = 0.0.0.0
修改完成后重启MySQL服务,使配置生效。
二、检查服务器3306端口是否放行
即使MySQL权限配置正确,如果服务器的3306端口没有开放,外部请求也无法到达数据库服务,需要在宝塔面板和云服务器控制台同时检查端口放行情况。
1. 宝塔面板放行3306端口
登录宝塔面板,进入安全页面,在端口放行栏目中,输入端口号3306,协议选择TCP,备注填写MySQL远程访问,点击放行即可。
2. 云服务器控制台放行3306端口
如果你的服务器是阿里云、腾讯云等云厂商提供的,还需要在云服务器的安全组规则中添加入站规则,允许TCP协议的3306端口被访问,来源可以设置为指定IP段或者0.0.0.0/0(允许所有IP访问,生产环境建议限制指定IP提升安全性)。
三、宝塔面板中配置远程数据库连接
完成上述两步配置后,回到需要连接远程数据库的宝塔面板,进入数据库页面,点击添加数据库,选择远程数据库,填写以下信息:
- 数据库名:远程数据库的名称
- 用户名:开启远程权限的数据库用户名
- 密码:对应用户的密码
- 数据库地址:远程服务器的公网IP地址,如果端口不是默认的3306,需要填写IP:端口格式
填写完成后点击提交,如果配置正确,就可以成功连接远程数据库了。
四、常见连接失败问题补充
如果完成上述配置后还是连接失败,可以检查以下几点:
- 远程服务器的防火墙是否关闭或者放行了3306端口,除了宝塔面板的安全设置,服务器系统本身的firewalld或者iptables也需要检查
- 数据库用户密码是否正确,是否有对应数据库的访问权限
- 远程服务器公网IP是否正确,是否存在网络不通的情况,可以先在本地用
ping 远程IP和telnet 远程IP 3306命令测试网络连通性
注意:生产环境中不建议将MySQL的远程访问权限开放给所有IP,尽量限制为固定的访问IP,避免数据库被恶意攻击。