商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 宝塔面板数据库连接失败如何修复_检查账号权限与防火墙端口

宝塔面板数据库连接失败如何修复_检查账号权限与防火墙端口

  发布于2026-07-19 阅读(0)

扫一扫,手机访问

MySQL连接不上,或者宝塔面板里数据库突然显示离线,这个问题其实挺常见的。很多人第一反应是密码错了,或者服务挂了,但实际情况往往没那么简单。今天就把这些坑一个个排清楚,从根源上解决。

宝塔面板数据库连接失败如何修复_检查账号权限与防火墙端口

MySQL报1130错误:Host is not allowed to connect

这种情况啊,说白了就是权限配置没到位。得说清楚,这不是密码输错了,也不是MySQL服务挂了,而是MySQL压根不认你的访问来源IP。宝塔默认只给localhost放行了root用户,所以当你用Na vicat这类远程工具,或者本地开发环境,甚至WordPress跨服务器调用时,都会卡在这里。

怎么检查呢?进宝塔终端,执行:mysql -uroot -p,输入密码后运行:

SELECT host, user FROM mysql.user WHERE user = 'root';

如果结果里host列只有localhost,那就对上了。先别急着去改my.cnf,先补上权限:

  • 执行GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的实际密码' WITH GRANT OPTION;
  • 再跑FLUSH PRIVILEGES;让变更生效
  • 如果只想允许某个特定IP(比如你本机的公网IP),把'%'换成'203.123.45.67'会更安全

注意:'%'代表任意主机,生产环境慎用;改完必须执行FLUSH PRIVILEGES,否则不生效。

3306端口不通但MySQL服务明明在运行

你看到服务状态是active (running),但用netstat -tuln | grep :3306一查,发现没输出?这就说明MySQL的监听地址被锁死了。宝塔安装的MySQL,默认会绑死在127.0.0.1上,对外当然不可见。

检查配置文件:/www/server/mysql/etc/my.cnf,找到bind-address这一行:

  • 如果是bind-address = 127.0.0.1,注释掉它,或者改成bind-address = 0.0.0.0
  • 确认skip-networking这一行被注释了(前面加#
  • 保存后执行systemctl restart mysqld(CentOS)或systemctl restart mysql(Ubuntu)

重启后立刻验证:netstat -tuln | grep :3306应该显示*:33060.0.0.0:3306,而不是127.0.0.1:3306

防火墙放行了3306,还是连不上

系统防火墙(ufwfirewalld)只是第一关。别忘了,云服务器还有第二道防线——安全组。这两者是独立运行的,缺一不可。

先确认系统防火墙已经开放了3306端口:

  • Ubuntu:ufw status | grep 3306,没输出就跑ufw allow 3306
  • CentOS:firewall-cmd --list-ports | grep 3306,没输出则执行firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload

再登录阿里云或腾讯云控制台,找到对应ECS实例的「安全组」→「入方向规则」,手动加一条规则:

  • 协议类型:TCP
  • 端口范围:3306/3306
  • 授权对象:0.0.0.0/0(测试用)或你的办公IP(生产环境推荐)

安全组规则修改后是立即生效的,不需要重启服务器

宝塔面板里“数据库”页面显示离线,但命令行能连

这种情况说明MySQL进程本身没问题,但宝塔读不到它的状态。问题往往出在配置路径错位或者文件权限异常上。

宝塔固定读取两个位置的配置文件:/www/server/mysql/etc/my.cnf/etc/my.cnf。如果实际配置在别处(比如Docker容器内),或者文件所有者不是mysql:mysql,面板就会误判。

检查并修复:

  • 执行ls -l /www/server/mysql/etc/my.cnf,看Owner是否为mysql
  • 如果不是,运行chown mysql:mysql /www/server/mysql/etc/my.cnf
  • 再执行chmod 644 /www/server/mysql/etc/my.cnf,避免权限过大被拒绝读取
  • 最后重启宝塔:bt restart,强制刷新数据库模块缓存

这个环节最容易被忽略:文件权限不对,宝塔连配置文件都读不到,自然显示“服务器已离线”。哪怕MySQL自己跑得飞起,它也只能干瞪眼。

本文转载于:https://www.php.cn/faq/2313044.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注