1130 主机"amazon-ec2-ip"不允许连接到此 MySQL 服务器



我在从另一台 EC2 服务器上访问我的一台 Amazon EC2 服务器上的 mysql DB 时遇到问题。我通读了有关为从外部 IP 地址访问 mysql 提供适当权限的各种文章,以下是我遵循的步骤:

  1. 在我的主机 EC306 实例上打开端口 2 以允许外部 Mysql 连接。
  2. 在文件/etc/mysql/my.cnf 中,将"绑定地址"从"127.0.0.1"更改为"0.0.0.0"。
  3. 使用 root 打开 mysql,并执行以下命令:授予 . 上的所有权限,以worker@由"密码"标识的"EC2-IP 地址";

根据我阅读的所有博客/文章,这应该已经解决了这个问题,但我不断收到以下错误:

1130  Host 'amazon-ec2-ip' is not allowed to connect to this MySQL server

我为 EC2 实例提供的 IP 地址是在创建实例时生成的弹性 IP。为了验证问题是否特定于 EC2,我尝试对不同的"静态 IP 地址"执行命令"3"。现在,这对我有用(即我能够从该远程服务器登录到mysql主机),因此可以确定上述步骤是正确的。

为什么 Amazon EC2 IP 地址不起作用?

发布此问题后,当我工作时,我意识到我什至无法ping到EC2服务器或远程登录它。所以一定是一些基本的东西出了问题。最后,一位朋友帮助我解决了这个问题。正如我所料,这个问题非常特定于EC2。

详情如下:

当我们创建一个 EC2 实例时,我们会得到一个类似于以下内容的外部 IP 地址:ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com

在mysql中设置权限时,我向上述IP地址授予权限,即:

GRANT ALL PRIVILEGES on . to worker@'ec2-XX-XXX-XXX-XX.ap-southeast1.compute.amazonaws.com' IDENTIFIED BY 'password';

当您尝试从另一个本地 EC2 实例与 EC2 实例通信时,这不起作用。为此,您需要提供 EC2 实例的"内部 IP 地址",可以使用 ip 命令找到该地址:

知识产权 A:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host 
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 12:31:41:02:58:47 brd ff:ff:ff:ff:ff:ff
inet **XX.XX.XX.XXX/23** brd YY.YYY.YY.YYY scope global eth0
inet6 fe80::1031:41ff:fe02:5847/64 scope link 
valid_lft forever preferred_lft forever

为了使事情正常工作,您需要向IP地址授予权限--"XX.XXX.XX.XXX/23",它应该可以工作。同样,在连接到"mysql"数据库时,提供给 mysql 命令的主机名也应该是主机 EC2 实例的"内部 IP 地址"。

我也面临着类似的问题。仅使用 DNS 名称的数字部分,例如公共 DNS 名称 ec2-13-114-245-645.compute-1.amazonaws.com 然后仅使用 13.114.245.645 连接到该实例。

希望对您有所帮助。

登录到本地 mariadb/mysql 服务器并给出以下命令:

授予对 的所有权限到"根"@"10.0.1.40",由带有授权选项的"红帽"标识;

这里 10.0.1.40 是我的远程 EC2 实例 IP 地址。

它应该有效。

我在 AWS ubuntu(18.04) 服务器中解决了同样的问题。以下是步骤:

  • 从security_group>入站规则打开 3306 端口。
  • 配置/etc/mysql/
  • mysql.conf.d/mysqld.cnf 文件:bind-address=0.0.0.0 使用它,它将允许所有 IP 远程连接 mySql
  • 在 mysql 中为用户添加权限
    • 授予 YOUR_USER@的所有权限。PRIVATE_IP。地址。这里"由"AN_USER_PASSWORD"标识;

最后一步很重要。在这里,您将添加用户,专用IP地址以及用户将用于远程登录的密码。

授予 root@的所有权限。由"ADMIN_AWS123"标识的 XX.XX.XX";

这里是你的用户,XX.XX.XX.XX 是你的私人IP地址,ADMIN_AWS123是你的远程密码。

希望这对你有所帮助:)

相关内容

最新更新