解决 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;
检查步骤
-
确认 MySQL 服务正在运行
-
确认端口 3306 是开放的
-
确认 root 用户有远程访问权限
-
确认没有网络层面的限制(如云服务商的安全组)
如果问题仍然存在,可能需要检查 MySQL 的错误日志获取更详细的信息。

浙公网安备 33010602011771号