这个问题的原因可能是由于以下几个原因导致的:
- 数据库服务器未开启远程访问权限;
- 数据库服务正在使用防火墙等工具禁止了外部对其的访问权限;
- 输入的数据库用户名或密码不正确;
- 建立的数据库连接格式不正确。
为了解决这个问题,我们需要完成以下几个步骤:
确认数据库远程访问权限
首先,启动MySQL服务,并登录到MySQL控制台。然后,使用以下命令检查是否已经启用了MySQL服务器的远程访问权限。
mysql> SELECT user, host FROM mysql.user;
如果你看到了以下输出:
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | localhost |
| mysql.sys | localhost |
| debian-sys-maint | localhost |
+------------------+-----------+
那么这意味着只有localhost用户才能从本地访问数据库,其他用户(如Navicat客户端)无法访问该数据库服务器。因此,你需要启用root用户的远程访问权限(或者你想要使用的用户),你可以使用以下命令进行更改:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;
此命令授予root用户所有数据库的所有权限,并允许他从任何IP访问该服务器(通配符%
)。如果你想授予其他用户远程访问权限,只需将'root'更改为相应的用户名即可。
检查防火墙设置
如果你已确认在MySQL服务器上启用了远程访问权限,但你仍然无法连接到服务器,那么可能是由于服务器正在使用防火墙工具阻止了外部对MySQL服务器的访问权限。因此,你需要检查你的防火墙规则是否允许从客户端到MySQL服务器的传入连接。
例如,在Ubuntu上,可以检查您的防火墙规则是否允许MySQL服务的传入连接,可以使用以下命令:
sudo ufw status
输出:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
3306/tcp ALLOW Anywhere
如果您的输出与上面的类似,并包含输出3306/tcp的行,则表明防火墙允许从客户端访问MySQL服务器。如果不存在,请使用以下命令添加规则:
sudo ufw allow 3306/tcp
校验用户名和密码
如果你已经通过上述步骤验证了远程访问权限和防火墙设置,那么请再次验证你登录数据库时使用的用户名和密码是否正确。确保密码是区分大小写的,并且用户名没有误输入。你可以在Navicat的连接窗口中双击想要访问的连接,并在窗口底部输入用户名和密码。
检查数据库连接URL语法
最后,检查Navicat连接服务器信息的URL语法是否正确。例如,使用以下URL进行连接:
jdbc:mysql://localhost:3306/database_name
其中,localhost
为MySQL服务器的IP地址,3306
是MySQL服务器端口号,database_name
是你要连接的数据库名。请确保你输入的信息都是正确的。
希望这些步骤可以帮助你解决Navicat连接MySQL服务器时出现“Access denied for user 'root'@'...' (using password: YES)”错误的问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决Navicat 连接服务器不成功的问题(Access denied for user ‘root’@ ‘*.*.*.*’ (using password: YES)) - Python技术站