【问题标题】:1130 Host 'amazon-ec2-ip' is not allowed to connect to this MySQL server1130 主机 'amazon-ec2-ip' 不允许连接到这个 MySQL 服务器
【发布时间】:2012-07-04 11:25:41
【问题描述】:

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

  1. 在我的主机 EC2 实例上打开端口 3306 以允许外部 Mysql 连接。
  2. 在文件 /etc/mysql/my.cnf 中,将“bind-address”从“127.0.0.1”更改为“0.0.0.0”。
  3. 用root打开mysql,执行如下命令: 将 . 上的所有权限授予 worker@'ec2-ip-address' 由“密码”标识;

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

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

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

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

标签: mysql amazon-ec2 amazon-web-services remote-access


【解决方案1】:

发布此问题后,当我工作时,我意识到我什至无法 ping 到 EC2 服务器或 telnet 到它。所以一些基本的东西一定是错的。最后一个朋友帮我解决了这个问题。正如我所料,这个问题是 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 命令找到:

ip:

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 地址”。

【讨论】:

  • 谢谢!希望我的头发现在能长回来!我按照你的建议做了,它立即奏效了……我一整天都在努力,直到我读到你的帖子。
【解决方案2】:

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

希望对你有帮助。

【讨论】:

    【解决方案3】:

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

    将所有权限授予 . 到 'root'@'10.0.1.40' 由带有 GRANT 选项的 'redhat' 标识;

    这里, 10.0.1.40 是我的远程 ec2 实例 ip 地址。

    它应该可以工作。

    【讨论】:

      【解决方案4】:

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

      • 从 security_group 打开 3306 端口-> InBound 规则。
      • 配置 /etc/mysql/mysql.conf.d/mysqld.cnf 文件:bind-address=0.0.0.0 使用它将允许所有 IP 远程连接到 mySql
      • 在mysql中为用户添加权限
        • .上的所有权限授予 YOUR_USER@'YOUR.PRIVATE_IP.ADDRESS.HERE' 由'AN_USER_PASSWORD'识别

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

      示例

      . 上的所有权限授予 root@'XX.XX.XX.XX' 由 'ADMIN_AWS123' 识别;

      这里 root 是您的用户,XX.XX.XX.XX 是您的私有 IP 地址,ADMIN_AWS123 是您的远程密码。

      希望对你有帮助:)

      【讨论】:

        猜你喜欢
        • 2011-02-02
        • 2013-02-11
        • 2017-08-26
        • 2021-06-23
        • 2011-02-26
        • 1970-01-01
        • 2012-11-12
        • 2017-10-09
        相关资源
        最近更新 更多