2010-07-15 53 views
6

我想通过命令连接到我的MySQL数据库的远程服务器上(通过SSH):MySQL的权限从本地否认,但可以远程连接

mysql -u me -h mydomain.com -p 

但它无法用ERROR 1045(28000) :拒绝访问用户..错误

虽然

mysql -u me -h localhost -p 

作品

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

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

mysql -u me -h mydomain.com -p 

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

回答

16

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

当你从远程主机连接(或者通过一个外部IP本地主机),它将匹配[email protected]%条目(如果是你正在使用的特定主机没有具体的补助!)。但是,当通过回送接口(“本地主机”IP)或套接字连接时,它将使用[email protected]授权。所以你必须有两个GRANT PRIVILEGES;一个用于[email protected],另一个用于[email protected]%