6

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

mysql -u me -h mydomain.com -p

但它失败并出现 ERROR 1045 (28000): Access denied for user.. 错误

尽管

mysql -u me -h localhost -p

作品

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

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

mysql -u me -h mydomain.com -p

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

4

1 回答 1

16

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

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

于 2010-07-15T09:50:11.990 回答