MySQL权限被本地拒绝,但可以远程连接

时间:2010-07-15 09:47:05

标签: mysql permissions dns mysql-error-1045

我试图通过以下命令连接到远程服务器上的mysql数据库(通过ssh):

mysql -u me -h mydomain.com -p

但它失败并出现ERROR 1045(28000):用户拒绝访问..错误

虽然

mysql -u me -h localhost -p

作品

现在这不仅仅是因为我没有设置权限,因为此数据库的权限是为%用户设置的,或者是me用户的任何主机。

事实证明,我可以使用同一个用户从本地计算机正确连接到服务器。即从我的本地机器运行以下命令:

mysql -u me -h mydomain.com -p

所以我的问题为什么会发生这种情况,我该如何解决?当我使用域名而不是localhost时,为什么我无法从服务器连接到我的mysql服务器,即使权限设置为接受来自任何主机的连接。

1 个答案:

答案 0 :(得分:16)

这是因为MySQL处理权限授予的方式。

当您从远程主机(或通过外部IP从本地主机)连接时,它将与me@%条目匹配(如果没有针对特定主机的特定授权你正在使用!)。但是当您通过环回接口(“localhost”IP)或套接字连接时,它将使用me@localhost授权。所以你必须有两个GRANT PRIVILEGES;一个用于me@localhost,一个用于me@%