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

qpgpyjmq  于 2021-06-18  发布在  Mysql
关注(0)|答案(26)|浏览(253)

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

2g32fytz

2g32fytz16#

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

pftdvrlh

pftdvrlh17#

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

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

zsohkypk

zsohkypk18#

问题:root@localhost 无法连接到opensuse 42.2-1.150.x86\u 64上新安装的mysql社区服务器。mysql拒绝连接-句号。
解决方案:

$ 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

文件user.myd的大小为0(真的?!)。我从另一个工作系统复制了所有3个文件。

$ /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

我可以登录了。然后,它只是重新应用所有模式特权的问题。另外,如果禁用了ipv6,请临时重新启用它,以便root@::1帐户也可以工作。

ogsagwnx

ogsagwnx19#

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

rqenqsqc

rqenqsqc20#

这适用于任何未来的远程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
beq87vna

beq87vna21#

一个人必须创造一个 new MySQL User 并按以下方式分配权限 Query prompt 通过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;

完成所有四个查询后,它应该与 username / password

3pvhb19x

3pvhb19x22#

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

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

wqlqzqxt

wqlqzqxt23#

简单方法:

Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD';

然后

FLUSH PRIVILEGES;

完成!

vawmfj5a

vawmfj5a24#

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

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阶段:连接验证”。

xmjla07d

xmjla07d25#

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

hmmo2u0o

hmmo2u0o26#

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

相关问题