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

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

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

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


当前回答

如果您使用的是MySQL WorkBench,则可以轻松实现:

从菜单中,选择服务器->用户和权限在左下方,单击“添加帐户”用用户名、主机匹配(%表示每个主机)和密码填写表单单击右下方的“应用”

之后你就可以走了。然后,如果要优化配置,可以使用“管理角色”选项卡设置用户可以使用的命令(SELECT、ALTER等),使用“架构权限”选项卡将用户交互限制为特定的架构。

其他回答

如果这是最近的mysql安装,那么在更改任何其他内容之前,只需执行以下命令,然后重试:

flush privileges;

这就为我修复了Ubuntu 16.04、mysql 5.7.20上的问题。YMMV。

这个答案可能会帮助某人。。。

所有这些答案都无济于事,然后我意识到我忘了检查一件重要的事情。。端口:)

我让mysql在一个运行在不同端口上的docker容器中运行。我指向3306端口上的主机,我的主机上运行着一个mysql服务器。我的容器在33060端口上暴露服务器。所以一直以来,我都在看错误的服务器!嘘!

嗯,上面的答案对我来说没有任何作用。经过大量研究,我找到了一个解决方案。虽然我可能会迟到,但这可能会在未来帮助其他人。

从终端登录SQL server

 mysql -u root -p
 -- root password
GRANT ALL ON *.* to root@'XX.XXX.XXX.XX' IDENTIFIED BY 'password';

这应该可以解决权限问题。

快乐编码!!

CPANEL溶液

转到Cpanel,查找远程MySQL。在输入字段中添加IP:

主机(允许使用%通配符)

注释以记住IP是什么。这就是对我来说的。

只需执行以下步骤:

连接到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'@'%';刷新权限刷新特权;