这应该很简单,但我不能让它为我的一生工作。我只是想远程连接到我的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”的条目与主机为“%”的用户完全相同。
我束手无策,不知道该怎么办。欢迎提出任何想法。
当前回答
这里的大多数答案显示您使用两个主机值创建用户:一个用于localhost,一个用于%。
请注意,除了内置的localhost用户(如root用户),您不需要这样做。如果您只是想创建一个可以从任何地方登录的新用户,可以使用
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT <whatever privileges are appropriate> ON <relevant tables> TO myuser;
它会工作得很好。(正如其他人所提到的,向来自任何域的用户授予管理权限是一个可怕的想法。)
其他回答
只需执行以下步骤:
连接到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'@'%';刷新权限刷新特权;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
这个错误是因为没有root用户的密码,当您尝试从外部连接时,可能会发生这种情况。
这里的所有答案在我的案例中都不起作用,所以我认为这可能会在未来帮助其他用户。这在我们的代码中也是一个问题,不仅仅是在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
这是为DirectAdmin工作的;
转到您的DirectAdmin。转到MySQL管理。选择数据库。在“访问主机”选项卡下,有一个字段。您应该用xxx.xx.xxx.xx填充此字段。单击添加主机。
已完成。现在,您可以通过your_database_username和your_database密码访问此数据库。太简单了!
这个答案可能会帮助某人。。。
所有这些答案都无济于事,然后我意识到我忘了检查一件重要的事情。。端口:)
我让mysql在一个运行在不同端口上的docker容器中运行。我指向3306端口上的主机,我的主机上运行着一个mysql服务器。我的容器在33060端口上暴露服务器。所以一直以来,我都在看错误的服务器!嘘!