这本来应该很简单,但是我无法让它在我的一生中发挥作用。
我只是想远程连接到我的 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> 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:连接验证”。
必须创建一个new MySQL User
并通过 phpMyAdmin 或命令提示符Query prompt
分配权限,如下所示:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
完成所有四个查询后,它应该使用username / password
我的错误消息是类似的,并且说即使我使用 root,也不允许 “主机 XXX 连接到该 MySQL 服务器”。这是确保 root 拥有正确权限的方法。
我的设置:
解决方案
检查:
现在访问您实际服务器上的 MySQL 数据库(例如,您以用户 “root” 的身份在端口 3306 上的远程地址是 123.123.123.123,并且我想更改对数据库 “数据条目” 的权限。记住要更改 IP 地址,端口和数据库名称)到您的设置)
mysql -u root -p
Enter password: <enter password>
mysql>GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password';
mysql>FLUSH PRIVILEGES;
mysql>exit
sudo 服务 mysqld 重新启动