这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的MySQL服务器。
连接方式:mysql-u根-h本地主机-p工作正常,但尝试:mysql-uroot-h'这里的任何ip地址'-p失败,错误为:错误1130(00000):主机“xxx.xx.xxx.xxx”不允许连接到此MySQL服务器
在mysql.user表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户完全相同。
我束手无策,不知道该怎么办。欢迎提出任何想法。
这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的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中。
如果您正在使用VB.NET
代替此代码:
Dim server As String = My.Settings.DB_Server
Dim username As String = My.Settings.DB_Username
Dim password As String = My.Settings.DB_Password
Dim database As String = My.Settings.DB_Database
MysqlConn.ConnectionString = "server=" & server & ";" _
& "user id=" & username & ";" _
& "password=" & password & ";" _
& "database=" & database
MysqlConn = New MySqlConnection()
您需要在第一行移动MyqlConn=NewMySqlConnection()。所以会是这样的
MysqlConn = New MySqlConnection()
Dim server As String = My.Settings.DB_Server
Dim username As String = My.Settings.DB_Username
Dim password As String = My.Settings.DB_Password
Dim database As String = My.Settings.DB_Database
MysqlConn.ConnectionString = "server=" & server & ";" _
& "user id=" & username & ";" _
& "password=" & password & ";" _
& "database=" & database
只需执行以下步骤:
连接到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'@'%';刷新权限刷新特权;
必须创建一个新的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;
完成所有四个查询后,应使用用户名/密码进行连接
如果您恰好在Windows上运行;一个简单的解决方案是运行MySQL服务器实例配置向导。它位于开始菜单中的MYSQL组中。在倒数第二个屏幕上,单击“允许远程计算机的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;