主机';xxx.xx.xxx.xxx';不允许连接到此MySQL服务器
这应该非常简单,但我无法让它在我的生活中发挥作用。主机';xxx.xx.xxx.xxx';不允许连接到此MySQL服务器,mysql,mysql-error-1130,Mysql,Mysql Error 1130,这应该非常简单,但我无法让它在我的生活中发挥作用。 我只是想远程连接到我的MySQL服务器 连接方式: 很好,但尝试: 失败,错误为: 在mysql.user表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户“root”的条目完全相同 我束手无策,不知道如何继续。 欢迎提出任何意见。可能是一种安全预防措施。您可以尝试添加新的管理员帐户: mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'som
我只是想远程连接到我的MySQL服务器
- 连接方式:
- 很好,但尝试:
- 失败,错误为:
mysql.user
表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户“root”的条目完全相同
我束手无策,不知道如何继续。
欢迎提出任何意见。可能是一种安全预防措施。您可以尝试添加新的管理员帐户:
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.
最常见的错误是插入一个新的
主机为“%”且
User='some_User',认为
允许您将localhost指定为
从同一台机器连接。这个
这不起作用的原因是
默认权限包括
具有Host='localhost'和
用户=“”。因为那个条目有一个主机
值“localhost”,该值更高
特定于“%”,它用于
选择新条目时的首选项
从本地主机连接!正确的
程序是插入第二个条目
使用Host='localhost'和
User='some_User',或删除
具有Host='localhost'和
用户=“”。删除条目后,
记住要发出刷新权限
语句重新加载授权表。
另见第5.4.4节“通道
控制,第1阶段:连接
核查”
如果手动修改授权表(使用INSERT、UPDATE等),则应执行
一个
FLUSH PRIVILEGES
语句,告诉服务器重新加载授权表
PS:我不建议允许任何主机为任何用户连接(尤其是
root
用户)。如果您将mysql用于客户机/服务器应用程序,请选择子网地址。如果您将mysql与web服务器或应用程序服务器一起使用,请使用特定的IP。消息*主机“xxx.xx.xxx.xxx”不允许连接到此mysql服务器
是mysql服务器对mysql客户端的回复。注意它是如何返回IP地址而不是主机名的
如果您试图连接mysql-h-u-p
,并且它返回带有IP地址的消息,那么mysql服务器无法在客户端上执行反向查找。这是至关重要的,因为这就是MySQL客户机映射到授权的方式
确保可以从MySQL服务器执行
nslookup
。如果这不起作用,则DNS服务器中没有条目。或者,您可以在MySQL服务器的HOSTS文件中输入一个条目(
),您需要从任何主机名授予用户访问权限
这是如何从phpmyadmin添加新权限的
转到权限>添加新用户
为所需用户名选择任意主机
必须创建一个
新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;
完成所有四个查询后,它应该连接到
用户名/密码,您所能做的就是打开mysql.cfg文件,您必须将绑定地址更改为该文件
绑定地址=127.0.0.1
然后重新启动mysql,您将能够将该服务器连接到此服务器
看这个,你可以从那个里得到想法
只需执行以下步骤:
1a)连接到mysql(通过本地主机)
1b)如果mysql服务器在Kubernetes(K8s)中运行并通过节点端口访问
kubectl exec -it [pod-name] -- /bin/bash
mysql -uroot -p
创建用户
创建由“密码”标识的用户“用户”@“%”代码>
授予权限
使用GRANT选项将**上的所有权限授予“@%”用户代码>
刷新权限
FLUSH PRIVILEGES;
FLUSH特权代码>
我的错误消息与此类似,并说“主机XXX不允许连接到此MySQL服务器”,即使我使用的是root。下面是如何确保root拥有正确的权限
我的设置:
- Ubuntu 14.04 LTS
- MySQL v5.5.37
解决方案
打开“etc/mysql/my.cnf”下的文件
检查:
- 端口(默认情况下,这是“端口=3306”)
- 绑定地址(默认情况下,这是'bind address=127.0.0.1';如果您想向所有人开放,只需注释掉这一行即可。在我的示例中,我会说实际的服务器位于10.1.1.7)
现在访问实际服务器上的MySQL数据库(假设您的远程地址为123.123.123.123,端口3306处为用户“root”,我想更改对数据库“dataentry”的权限。记住将IP地址、端口和数据库名称更改为您的设置)
mysql-u root-p
输入密码:
mysql>将**上的所有内容授予root@'123.123.123.123',由“输入密码”标识;
mysql>刷新权限;
mysql>退出
sudo服务mysqld重启
您现在应该能够远程连接到数据库。例如,我使用MySQL Workbench并输入“Hostname:10.1.1.7”、“Port:3306”、“Username:root”
我也面临着同样的问题,它在2分钟内解决了,我只是通过cpanel白名单ip
假设您正试图从服务器A连接服务器B的数据库。
转到服务器B Cpanel->R
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;
mysql -uroot -p
kubectl exec -it [pod-name] -- /bin/bash
mysql -uroot -p
mysql -u root -p
Enter password: <enter password>
mysql>GRANT ALL ON *.* to root@'123.123.123.123' IDENTIFIED BY 'put-your-password';
mysql>FLUSH PRIVILEGES;
mysql>exit
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()
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
FLUSH PRIVILEGES;
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT <whatever privileges are appropriate> ON <relevant tables> TO myuser;
flush privileges;
$ ls -l /var/lib/mysql/mysql/user.*
-rw-rw---- 1 mysql mysql 0 Apr 29 19:44 /var/lib/mysql/mysql/user.MYD
-rw-rw---- 1 mysql mysql 1024 Apr 29 19:44 /var/lib/mysql/mysql/user.MYI
-rw-rw---- 1 mysql mysql 10684 Apr 29 19:44 /var/lib/mysql/mysql/user.frm
$ /usr/sbin/rcmysql stop
$ cd /var/lib/mysql/mysql/
$ scp root@othersytem:/var/lib/mysql/mysql/user.* ./
$ /usr/sbin/rcmysql start
$ cd -
$ mysql -u root -p
Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD';
FLUSH PRIVILEGES;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
mysql -u root -p
-- root password
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;
EXIT;
sudo ufw allow from remote_IP_address to any port 3306