解决 Navicat 远程连接 MySQL 的 "Access denied" 错误

问题:使用navicat远程访问数据库在用户名密码正确的情况下,报错信息为“Access denied for user'root'@'xx.xx.xx.xx' (using password: YES)”

可能的原因和解决方案

1. root 用户没有远程访问权限

MySQL 默认只允许 root 用户从本地连接(localhost)。要为 root 用户添加远程访问权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'xx.xx.xx.xx' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;

或者允许从任何主机连接(不推荐,有安全风险):

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2. MySQL 配置未启用远程访问

检查 MySQL 配置文件(通常是 my.cnf 或 my.ini):

bind-address = 0.0.0.0

然后重启 MySQL 服务。

3. 防火墙阻止了连接

确保服务器防火墙允许 3306 端口的连接:

  • Linux: sudo ufw allow 3306

  • Windows: 在防火墙设置中添加例外

4. MySQL 用户权限问题

检查 root 用户的当前权限:

SELECT host, user FROM mysql.user;

5. 密码验证插件问题

如果使用 MySQL 8.0+,可能需要更改密码验证方式:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

检查步骤

  1. 确认 MySQL 服务正在运行

  2. 确认端口 3306 是开放的

  3. 确认 root 用户有远程访问权限

  4. 确认没有网络层面的限制(如云服务商的安全组)

如果问题仍然存在,可能需要检查 MySQL 的错误日志获取更详细的信息。

posted @ 2025-07-17 17:27  独自一人的江湖  阅读(179)  评论(0)    收藏  举报