我试图通过以下命令连接到远程服务器上的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服务器,即使权限设置为接受来自任何主机的连接。
答案 0 :(得分:16)
这是因为MySQL处理权限授予的方式。
当您从远程主机(或通过外部IP从本地主机)连接时,它将与me@%
条目匹配(如果没有针对特定主机的特定授权你正在使用!)。但是当您通过环回接口(“localhost”IP)或套接字连接时,它将使用me@localhost
授权。所以你必须有两个GRANT PRIVILEGES
;一个用于me@localhost
,一个用于me@%
。