我正在尝试通过以下命令(通过 ssh)连接到远程服务器上的 mysql 数据库:
mysql -u me -h mydomain.com -p
但它失败并出现错误 1045 (28000):用户访问被拒绝......错误
同时
mysql -u me -h localhost -p
作品
现在这不仅仅是因为我没有设置权限,因为这个数据库的权限是为 % 或 me 用户的任何主机设置的。
事实证明,我可以使用同一用户从本地计算机正确连接到服务器。即从我的本地机器运行以下命令:
mysql -u me -h mydomain.com -p
所以我的问题是为什么会发生这种情况,我该如何解决?为什么当我使用域名而不是 localhost 时无法从我的服务器连接到我的 mysql 服务器,即使权限设置为接受来自任何主机的连接。
最佳答案
发生这种情况是因为 MySQL 处理权限授予的方式。
当您从远程主机(或通过外部 IP 从本地主机)连接时,它将匹配 me@%
条目(如果没有特定的授予您正在使用的特定主机!)。但是当您通过环回接口(interface)(“本地主机”IP)或套接字连接时,它将使用 me@localhost
授权。所以你必须有两个GRANT PRIVILEGES
;一个用于 me@localhost
,一个用于 me@%
。
关于MySQL 权限被本地拒绝但可以远程连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3254365/