这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的MySQL服务器。
连接方式:mysql-u根-h本地主机-p工作正常,但尝试:mysql-uroot-h'这里的任何ip地址'-p失败,错误为:错误1130(00000):主机“xxx.xx.xxx.xxx”不允许连接到此MySQL服务器
在mysql.user表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户完全相同。
我束手无策,不知道该怎么办。欢迎提出任何想法。
这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的MySQL服务器。
连接方式:mysql-u根-h本地主机-p工作正常,但尝试:mysql-uroot-h'这里的任何ip地址'-p失败,错误为:错误1130(00000):主机“xxx.xx.xxx.xxx”不允许连接到此MySQL服务器
在mysql.user表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户完全相同。
我束手无策,不知道该怎么办。欢迎提出任何想法。
当前回答
如果您恰好在Windows上运行;一个简单的解决方案是运行MySQL服务器实例配置向导。它位于开始菜单中的MYSQL组中。在倒数第二个屏幕上,单击“允许远程计算机的root访问”框。
其他回答
如果这是最近的mysql安装,那么在更改任何其他内容之前,只需执行以下命令,然后重试:
flush privileges;
这就为我修复了Ubuntu 16.04、mysql 5.7.20上的问题。YMMV。
消息“主机”“xxx.xx.xxx.xxx”“不允许连接到此MySQL服务器”是MySQL服务器对MySQL客户端的答复。注意它如何返回IP地址而不是主机名。
如果您试图连接mysql-h<hostname>-u<someone>-p,并且它返回带有IP地址的消息,则mysql服务器无法在客户端上执行反向查找。这很关键,因为这就是它将MySQL客户端映射到授权的方式。
确保可以从MySQL服务器执行nslookup<mysqlclient>。如果这不起作用,那么DNS服务器中就没有条目。或者,您可以在MySQL服务器的HOSTS文件中输入一个条目(<ipaddress><fullyqualifiedhostname><hostname><-这里的顺序可能很重要)。
我的服务器主机文件中的一个条目允许反向查找MySQL客户端,解决了这个问题。
您需要从任何主机名授予用户访问权限。
这是如何从phpmyadmin添加新权限的
转到权限>添加新用户
为所需用户名选择任意主机
这是为DirectAdmin工作的;
转到您的DirectAdmin。转到MySQL管理。选择数据库。在“访问主机”选项卡下,有一个字段。您应该用xxx.xx.xxx.xx填充此字段。单击添加主机。
已完成。现在,您可以通过your_database_username和your_database密码访问此数据库。太简单了!
简单的方法是使用root帐户登录phpmyadmin,然后转到mysql数据库并选择用户表,然后编辑root帐户并在host字段中添加%wildcard。然后通过ssh刷新权限
FLUSH PRIVILEGES;