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

zen*_*nna 6 mysql dns permissions mysql-error-1045

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

mysql -u me -h mydomain.com -p
Run Code Online (Sandbox Code Playgroud)

但它失败了ERROR 1045(28000):访问被拒绝用户..错误

mysql -u me -h localhost -p
Run Code Online (Sandbox Code Playgroud)

作品

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

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

mysql -u me -h mydomain.com -p
Run Code Online (Sandbox Code Playgroud)

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

Bor*_*lid 16

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

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