不允许主机 'XXX' 连接到此 MySQL 服务器 (V.8)

Posted

技术标签:

【中文标题】不允许主机 \'XXX\' 连接到此 MySQL 服务器 (V.8)【英文标题】:Host 'XXX' is not allowed to connect to this MySQL server (V.8)不允许主机 'XXX' 连接到此 MySQL 服务器 (V.8) 【发布时间】:2019-06-07 05:54:45 【问题描述】:

当尝试连接到在本地网络上运行的 mysql 时,我收到了错误消息:

Host 'XXX' is not allowed to connect to this MySQL server.

免责声明(MySQL 版本 8)

下面提供的答案不能解决 MySQL v8

中的问题

Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server

host 'localhost' is not allowed to connect to this MySQL server (#1130)

这些旧答案中提供的解决方案在 MySQL Ver 8.0.13 中返回以下错误。

GRANT ALL PRIVILEGES ON mysql.* TO root@localhost IDENTIFIED BY 'pass123' WITH GRANT OPTION;

或者

Grant All Privileges ON *.* to 'root'@'%' Identified By 'pass123'; 

输出信息:

ERROR 1064 (42000):您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在“IDENTIFIED BY 'pass123' WITH GRANT OPTION”附近使用的语法 1

【问题讨论】:

【参考方案1】:

见https://dev.mysql.com/doc/refman/8.0/en/grant.html

V8 中的 GRANT 语法已更改,您不再需要或允许使用 IDENTIFIED .. 部分。

CREATE USER 'fred'@'localhost' IDENTIFIED BY 'password';
GRANT All ON db.* to 'fred'@'%'; 

或者对于您本地局域网段上的任何地方,可能是这样的

GRANT All ON db.* to 'fred'@'10.0.0'; 

【讨论】:

事实上,低于版本 8 的 MySQL 允许在 GRANT 语句中使用IDENTIFIED BY ...自动创建用户 GRANT All ON db.* to 'fred'@'%'; 应该是GRANT All ON db.* to 'fred'@'localhost'; 顺便说一下这个例子.. 是的 @RaymondNijland 不确定 OP 是想从任何地方访问还是只是在本地访问。正如他们所说的在他们的网络上运行的服务器,我认为它不会是localhost localhost 适用于 LAN 环境。现在它给了我:ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'。 root 用户已经存在。我只需要授予权限。 root 被自动授予执行任何操作的权限。注意:您不应使用root 进行正常访问,例如我们的网站!创建一个特定于应用程序的帐户并仅授予其正常使用所需的权利和特权

以上是关于不允许主机 'XXX' 连接到此 MySQL 服务器 (V.8)的主要内容,如果未能解决你的问题,请参考以下文章

主机 'xxx.xx.xxx.xxx' 不允许连接到这个 MySQL 服务器

不允许主机 localhost 连接到此 MySQL 服务器 [关闭]

进行本地连接时不允许主机连接到此mysql服务器[关闭]

进行本地连接时不允许主机连接到此mysql服务器[关闭]

#1130 - 主机 'localhost' 不允许连接到此 MySQL 服务器 - 运行 Acunetix 扫描后

为啥我会收到“不允许主机 '192.168.1.220' 连接到此 MySQL 服务器”? [复制]