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

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

这应该非常简单,但我不能让它为我的生活工作。
我只是想远程连接到我的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”的条目完全相同。
我束手无策,不知道该怎么办。欢迎提出任何意见。

bogh5gae

bogh5gae16#

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

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

hjqgdpho

hjqgdpho17#

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

krcsximq

krcsximq18#

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

flush privileges;

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

6bc51xsx

6bc51xsx19#

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

dl5txlt9

dl5txlt920#

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

FLUSH PRIVILEGES;
bttbmeg0

bttbmeg021#

可能是安全措施。您可以尝试添加新的管理员帐户:

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;

尽管正如帕斯卡和其他人所指出的,让一个拥有这种访问权限的用户对任何ip开放都不是一个好主意。如果需要管理用户,请使用root,并将其保留在localhost上。对于任何其他操作,请严格指定所需的权限并限制用户的可访问性,如pascal在下面所建议的。
编辑:
mysql常见问题:
如果无法找出拒绝访问的原因,请从用户表中删除主机值包含通配符的所有条目(包含“%”或“\”字符的条目)。一个非常常见的错误是插入一个host='%'和user='some\u user'的新条目,认为这样可以指定localhost从同一台机器进行连接。这不起作用的原因是,默认权限包括一个host='localhost'和user=''的条目。因为该条目的主机值“localhost”比“%”更具体,所以在从localhost连接时,它优先于新条目使用!正确的步骤是插入host='localhost'和user='some\u user'的第二个条目,或者删除host='localhost'和user=''的条目。删除条目后,请记住发出flush privileges语句以重新加载grant表。另见第5.4.4节,“访问控制,第1阶段:连接验证”。

zlhcx6iw

zlhcx6iw22#

如果你碰巧在windows上运行;一个简单的解决方案是运行mysql服务器示例配置向导。它在开始菜单的mysql组中。在最后一个屏幕的第二个屏幕上,单击“allow root access from remote machines”框。

23c0lvtd

23c0lvtd23#

如果手动修改授权表(使用insert、update等),则应执行 FLUSH PRIVILEGES 语句来通知服务器重新加载授予表。
ps:我不建议允许任何主机为任何用户连接(特别是不允许 root 使用)。如果您将mysql用于客户机/服务器应用程序,请选择子网地址。如果将mysql与web服务器或应用程序服务器一起使用,请使用特定的IP。

6tr1vspr

6tr1vspr24#

只需执行以下步骤:
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;

vuv7lop3

vuv7lop325#

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

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

wlzqhblo

wlzqhblo26#

我的错误消息是类似的,并说'主机不允许连接到这个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'

相关问题