不允许主机“.xx..”连接到此mysql服务器

ghg1uchk  于 2021-06-20  发布在  Mysql
关注(0)|答案(26)|浏览(510)

这应该非常简单,但我不能让它为我的生活工作。
我只是想远程连接到我的mysql服务器。
连接方式

mysql -u root -h localhost -p

很好,但是努力

mysql -u root -h 'any ip address here' -p

失败并出现错误

ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server

mysql.user 表中,主机为“localhost”的用户“root”的条目与主机为“%”的用户“root”的条目完全相同。
我束手无策,不知道该怎么办。欢迎提出任何意见。

qyswt5oh

qyswt5oh1#

你可以打开mysql.cfg文件,把绑定地址改成这个
绑定地址=127.0.0.1
然后重新启动mysql,您就可以将该服务器连接到此服务器。
看这个,你可以从那个想法。
这是真正的Solr

fhg3lkii

fhg3lkii2#

cpanel溶液
转到cpanel,查找远程mysql。在输入字段中添加ip:
主机(允许使用通配符)
注解以记住这是什么ip。对我来说就是这样。

aydmsdu9

aydmsdu93#

我的错误消息是类似的,并说'主机不允许连接到这个mysql服务器',即使我使用的是根。下面是如何确保root拥有正确的权限。
我的设置:
ubuntu 14.04 lts版
mysql版本5.5.37
解决方案
打开“etc/mysql/my.cnf”下的文件
检查:
端口(默认情况下为“port=3306”)
绑定地址(默认情况下为‘bind address=127.0.0.1’;如果你想向所有人开放,那么就把这行注解掉。在我的例子中,我会说实际的服务器在10.1.1.7)
现在访问实际服务器上的mysql数据库(假设您的远程地址是123.123.123.123,端口3306处的用户'root',我想更改对数据库'dataentry'的权限)。记住将ip地址、端口和数据库名称更改为您的设置)

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

sudo服务mysqld重启
现在应该可以远程连接到数据库了。例如,我使用mysql workbenchhostname:10.1.1.7', 'port:3306', 'username:root'

gmxoilav

gmxoilav4#

简单的方法是使用根帐户登录phpmyadmin,然后转到mysql数据库并选择用户表,然后编辑根帐户并在主机字段中添加%wildcard。然后通过ssh刷新权限

FLUSH PRIVILEGES;
3pmvbmvn

3pmvbmvn5#

如果您试图在没有定义connectionstring的情况下执行mysql查询,则会出现此错误。
可能您忘记了在执行之前定义连接字符串。你检查过这个了吗(抱歉英语不好)

yrefmtwq

yrefmtwq6#

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

flush privileges;

仅此一项就解决了我在ubuntu16.04、mysql 5.7.20上的问题。基督教青年会。

sd2nnvve

sd2nnvve7#

这适用于任何未来的远程mysql连接!

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

导航到以bind address指令开头的行。应该是这样的:

bind-address            = 0.0.0.0

以根终端身份登录mysql

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
tktrz96b

tktrz96b8#

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

此错误是因为根目录没有密码,而这可能是在您尝试从外部连接时发生的。

kqqjbcuj

kqqjbcuj9#

这里的所有答案在我的情况下都不起作用,所以我认为这可能会在将来帮助其他用户。这在我们的代码中也是一个问题,不仅仅是

nwlls2ji

nwlls2ji10#

您需要从任何主机名授予用户访问权限。
这是如何从phpmyadmin添加新特权的
转到权限>添加新用户

为所需用户名选择任意主机

izj3ouym

izj3ouym11#

我也面临着同样的问题,它解决了我在2分钟我只是白名单ip通过cpanel
假设您正试图从服务器a连接服务器b的数据库。进入serverbcpanel->remotemysql->输入服务器的ip地址,就这样。

ee7vknir

ee7vknir12#

只需执行以下步骤:
1a)连接到mysql(通过localhost)

mysql -uroot -p

1b)如果mysql服务器运行在kubernetes(k8s)中,并且通过节点端口访问

kubectl exec -it [pod-name] -- /bin/bash
mysql -uroot -p

创建用户 CREATE USER 'user'@'%' IDENTIFIED BY 'password'; 授予权限 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION; 刷新权限 FLUSH PRIVILEGES;

doinxwow

doinxwow13#

只需使用mysql的gui工具(sqlyog)提供的接口:
单击用户管理器:

现在,如果您想为任何其他远程pc授予访问权限,只需确保,就像下面的图片一样,主机字段值是%(这是通配符)

zazmityj

zazmityj14#

这个答案可能会帮助某人。。。
所有这些答案都没用,然后我意识到我忘了检查一个关键的东西。。端口:)
我有mysql运行在一个docker容器中运行在另一个端口上。我指着3306端口上的主机,上面运行着一个mysql服务器。我的容器暴露端口33060上的服务器。所以一直以来,我看错了服务器!哦!

lmyy7pcs

lmyy7pcs15#

信息 *Host ''.xx..'' is not allowed to connect to this MySQL server 是mysql服务器对mysql客户端的回复。注意它是如何返回ip地址而不是主机名的。
如果你想和 mysql -h<hostname> -u<somebody> -p 并且它返回这个带有ip地址的消息,那么mysql服务器就不能在客户机上进行反向查找。这一点很关键,因为这就是mysql客户机Map到授权的方式。
确保你能做一个 nslookup <mysqlclient> 从mysql服务器。如果这不起作用,那么dns服务器中就没有条目。或者,您可以在mysql服务器的hosts文件中输入一个条目( <ipaddress> <fullyqualifiedhostname> <hostname> <-这里的顺序可能很重要)。
我的服务器的主机文件中的一个条目允许反向查找mysql客户机,解决了这个问题。

相关问题