这本来应该很简单,但是我 无法 让它在我的一生中发挥作用。 我只是想远程连接到我的MySQL服务器。
连接为
mysql -u root -h localhost -p
工作正常,但尝试
mysql -u root -h 'any ip address here' -p
失败并显示错误
ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
在该mysql.user表中,具有主机“ localhost”的用户“ root”与具有主机“%”的另一个用户的条目完全相同。
mysql.user
我处于机智,不知道如何进行。任何想法都欢迎。
可能是安全预防措施。您可以尝试添加新的管理员帐户:
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' -> WITH GRANT OPTION; mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' -> WITH GRANT OPTION;
尽管正如Pascal和其他人所指出的那样,让具有这种访问权限的用户可以访问任何IP并不是一个好主意。如果需要管理用户,请使用root,并将其保留在localhost上。对于任何其他操作,请准确指定所需的特权,并按照Pascal的建议限制用户的可访问性。
编辑:
从MySQL常见问题解答:
如果无法弄清为什么拒绝访问,请从用户表中删除所有具有包含通配符的主机值的条目(包含“%”或“ _”字符的条目)。一个非常常见的错误是使用Host =’%’和User =’some_user’插入一个新条目,认为这允许您指定本地主机从同一台计算机进行连接。这样做不起作用的原因是,默认特权包括Host =’localhost’和User =’‘的条目。由于该条目的主机值’localhost’比’%’更具体,因此从localhost连接时,它优先于新条目使用!正确的过程是使用Host =’localhost’和User =’some_user’插入第二个条目,或使用Host =’localhost’和User =’‘删除条目。删除条目后,请记住发出FLUSH PRIVILEGES语句以重新加载授权表。另请参见第5.4.4节“访问控制,阶段1:连接验证”。