此错误表示您的 IP 地址没有被授权访问宝塔服务器上的 MySQL。主要原因包括:
1 2 |
mysql -uroot -p # 输入宝塔面板显示的 MySQL root 密码 |
1 2 3 4 5 6 7 8 |
-- 创建允许从任意主机连接的root用户 CREATE USER 'root'@'%' IDENTIFIED BY '密码';
-- 授予权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
-- 刷新权限 FLUSH PRIVILEGES; |
也可以通过宝塔面板可视化配置添加允许任何人访问的 root 用户,找到高级设置
找到 MySQL 用户管理
创建用户,指定访问权限,如果希望任何人连接就选 --> 所有人
1 |
bind-address = 127.0.0.1 |
或者改为:
1 |
bind-address = 0.0.0.0 |
此错误表示用户名和密码验证失败。在宝塔环境中常见原因包括:
宝塔安装的 MySQL 8.0+ 使用新的认证方式,可能与某些客户端不兼容:
1 2 |
mysql -uroot -p # 输入宝塔面板显示的 MySQL root 密码 |
1 2 3 |
-- 修改认证插件为兼容模式 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; FLUSH PRIVILEGES; |
如果无法登录 MySQL,可以通过宝塔面板重置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# 停止MySQL服务 /etc/init.d/mysqld stop
# 安全模式启动MySQL mysqld_safe --skip-grant-tables &
# 无密码登录 mysql -u root
# 执行以下SQL命令 USE mysql; # MySQL 5.7 UPDATE user SET authentication_string=PASSWORD('密码') WHERE User='root'; # MySQL 8.0+ ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; FLUSH PRIVILEGES; exit;
# 重启MySQL服务 /etc/init.d/mysqld restart |
应用程序最好使用专门的数据库用户而非 root:
如果仍然遇到认证问题,登录 MySQL 执行:
1 2 3 4 5 |
-- 对于root用户 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES; |
如果以上方法仍无法解决连接问题,请按照以下步骤进行排查:
检查 MySQL 状态:
1 |
/etc/init.d/mysqld status |
检查 MySQL 配置:
1 |
cat /www/server/mysql/etc/my.cnf |
检查 MySQL 进程与端口:
1 2 |
ps aux | grep mysql netstat -tunlp | grep 3306 |
检查 MySQL 日志:
1 |
tail -100 /www/server/mysql/log/error.log |