这应该非常简单,但是我无法让它工作。我只是想远程连接到我的 MySQL 服务器。连接方式:mysql -u root -h localhost -p 工作正常,但是......
这应该非常简单,但我 却无法 让它发挥作用。
我只是想远程连接到我的 MySQL 服务器。
p2
mysql -u root -h localhost -p
p3
mysql -u root -h 'any ip address here' -p
p4
p5
在 mysql.user
表中,用户“root”与主机“localhost”的条目与主机“%”的条目完全相同。
我已经束手无策了,不知道该怎么办。欢迎提出任何想法。
可能是为了安全起见。您可以尝试添加新的管理员帐户:
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,并将其保留在本地主机上。对于任何其他操作,请准确指定您需要的权限并限制用户的可访问性,如 Pascal 在下面所建议的那样。
来自 MySQL 常见问题解答:
如果您无法弄清楚为什么会拒绝访问,请从用户表中删除所有 Host 值包含通配符的条目(包含“%”或“_”字符的条目)。一个常见的错误是插入一个新条目,其中 Host='%' 和 User='some_user',认为这允许您指定 localhost 从同一台机器进行连接。这不起作用的原因是默认权限包括一个 Host='localhost' 和 User='' 的条目。由于该条目的 Host 值“localhost”比“%”更具体,因此在从本地主机连接时优先使用它而不是新条目!正确的方法是插入第二个条目,其中 Host='localhost' 和 User='some_user',或删除 Host='localhost' 和 User='' 的条目。删除条目后,请记住发出 FLUSH PRIVILEGES 语句来重新加载授权表。另请参见第 5.4.4 节“访问控制,第 1 阶段:连接验证”。