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

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

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

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


当前回答

1.从终端将您连接到MySQL运行容器

docker exec -it your_container_name_or_id bash

2.在容器中,将您连接到MySQL数据库

mysql -u your_user -p

输入密码以连接到数据库。

3.执行此SQL脚本以列出所有现有数据库用户:

SELECT host, user FROM mysql.user;

结果如下:

host user
127.0.0.1 root
::1 root
localhost mysql.sys
localhost root

您应该添加新行:

host user
% root
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

其他回答

只需执行以下步骤:

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

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

必须创建一个新的MySQL用户,并通过phpMyAdmin或命令提示符在查询提示符中分配如下权限:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

完成所有四个查询后,应使用用户名/密码进行连接

这是为DirectAdmin工作的;

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

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

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

从终端登录SQL server

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

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

快乐编码!!