这应该很简单,但我 无法 让它为我的生活工作。 我只是想远程连接到我的 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’ 插入一个新条目,认为这允许您指定 localhost 从同一台机器进行连接。这不起作用的原因是默认权限包括 Host=’localhost’ 和 User=’‘ 的条目。因为该条目的主机值“localhost”比“%”更具体,所以在从 localhost 连接时优先使用它而不是新条目!正确的程序是插入第二个条目,其中 Host=’localhost’ 和 User=’some_user’,或删除 Host=’localhost’ 和 User=’‘ 的条目。删除条目后,请记住发出 FLUSH PRIVILEGES 语句以重新加载授权表。另请参见第 5.4.4 节,“访问控制,第 1 阶段:连接验证”。