这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的MySQL服务器。

连接方式:mysql-u根-h本地主机-p工作正常,但尝试:mysql-uroot-h'这里的任何ip地址'-p失败,错误为:错误1130(00000):主机“xxx.xx.xxx.xxx”不允许连接到此MySQL服务器

在mysql.user表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户完全相同。

我束手无策,不知道该怎么办。欢迎提出任何想法。


当前回答

这是为DirectAdmin工作的;

转到您的DirectAdmin。转到MySQL管理。选择数据库。在“访问主机”选项卡下,有一个字段。您应该用xxx.xx.xxx.xx填充此字段。单击添加主机。

已完成。现在,您可以通过your_database_username和your_database密码访问此数据库。太简单了!

其他回答

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

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常见问题解答:

如果你不明白为什么访问被拒绝,从用户中删除表中包含主机的所有条目包含通配符的值(条目包含“%”或“_”字符)。A.非常常见的错误是插入新的主机=“%”且用户=“some_User”,认为这允许您将localhost指定为从同一台计算机连接。这个这不起作用的原因是默认权限包括带有Host='localhost'和用户=“”。因为该条目具有主机值'localhost',大于特定于“%”,它用于新条目的首选项从本地主机连接!正确的过程是插入第二个条目主机=“本地主机”且用户=“some_User”,或删除带有Host='localhost'和用户=“”。在删除条目之后,记住要发布FLUSH特权语句重新加载授权表。另请参见第5.4.4节“通道”控制,第1阶段:连接验证”。

只需使用MySql的GUI工具(SQLyog)提供的界面:

单击用户管理器:

现在,如果您想授予任何其他远程PC的访问权限,只需确保,正如下图所示,主机字段值为%(这是通配符)

只需执行以下步骤:

连接到MySQL(通过localhost)mysql-uurot-p如果MySQL服务器在Kubernetes(K8s)中运行并通过NodePort访问kubectl exec-it[pod name]--/bin/bashmysql-uurot-p

创建用户CREATE USER“USER”@“%”IDENTIFIED BY“password”;授予权限使用GRANT OPTION将*.*上的所有特权授予'user'@'%';刷新权限刷新特权;

如果手动修改授权表(使用INSERT、UPDATE等),则应执行FLUSH PRIVILEGES语句,告诉服务器重新加载授权表。

PS:我不建议允许任何主机连接任何用户(尤其是非root用户)。如果您将mysql用于客户机/服务器应用程序,请首选子网地址。如果您在web服务器或应用程序服务器上使用mysql,请使用特定的IP。

如果您恰好在Windows上运行;一个简单的解决方案是运行MySQL服务器实例配置向导。它位于开始菜单中的MYSQL组中。在倒数第二个屏幕上,单击“允许远程计算机的root访问”框。