一尘不染

主机“ xxx.xx.xxx.xxx”不允许连接到该MySQL服务器

mysql

这本来应该很简单,但是我 无法 让它在我的一生中发挥作用。
我只是想远程连接到我的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”与具有主机“%”的另一个用户的条目完全相同。

我处于机智,不知道如何进行。任何想法都欢迎。


阅读 328

收藏
2020-05-17

共1个答案

一尘不染

可能是安全预防措施。您可以尝试添加新的管理员帐户:

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:连接验证”。

2020-05-17