【问题标题】:MYSQL refuses remote connection with error "ERROR 2003 (HY000)" and TCP error 111MYSQL 拒绝远程连接,出现错误“ERROR 2003 (HY000)”和 TCP 错误 111
【发布时间】:2021-06-20 01:50:21
【问题描述】:

我已经在 AWS 上的 Ubuntu 20.04 LTS (ARM) 实例上安装了 MySQL 8.0.25。
我可以在本地使用 127.0.0.1 地址访问它,但不能从另一个实例远程访问它。

“Bind-address”最初被注释掉了,我取消注释并更改为“0.0.0.0”(mysql服务已重新启动) - 没有帮助,所以我将其注释回来。
cnf文件中没有“Skip-networking”。

我将端口更改为 3307 只是为了确保我正在查看正确的 cnf,现在 MYSQL 确实侦听了 3307 端口:

在本地我可以使用端口 3307 进行连接,但不能远程连接:

这里是 iptables:

我知道防火墙运行良好,因为如果我从规则中删除端口 3307,错误会有所不同:

如您所见,TCP 错误 111 ("Connection Refused") 变成了错误 113 ("No Route to Host")。

Telnet 连接被拒绝并出现同样的错误:

我已重新启动 MySQL 实例 - 没有任何变化。

如果“bind-address”被注释掉并且防火墙是打开的,为什么MYSQL会拒绝远程连接?

【问题讨论】:

  • 我只看到它在 127.0.0.1 上监听,而不是 0.0.0.0。如果您没有绑定到 0.0.0.0,它将无法远程访问。当您设置绑定地址时,您的 netstat 是否发生了变化?
  • 我看不到您的安全组是如何设置的。你也可以发一下吗?
  • @RodrigoM - 安全组从任何地址打开端口 22、3306 和 3307。如果 SG 是问题所在,那么关闭 Ubuntu 防火墙中的端口不会将 TCP 错误从 111 更改为 113。
  • @stdunbar - 当我将“bind-address”更改为“0.0.0.0”并重新启动 MySQL 时,netstat 仍将“127.0.0.1:3307”显示为本地地址,并将 0.0.0.0:* 显示为国外地址。i.imgur.com/zhiQkm0.jpeg

标签: mysql amazon-web-services ubuntu


【解决方案1】:

@stdunbar 的评论为我指明了正确的方向。

问题的发生是因为我按照https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04 的MYSQL 安装说明,并在配置MYSQL 时运行了安全脚本:

sudo mysql_secure_installation

由于某种原因,此脚本导致 MYSQL 忽略 cnf 文件中的 bind-address 设置,而它仍然使用 port 设置 - 非常混乱!

当我在不运行安全脚本的情况下安装 MYSQL 时,netstat -lnp | grep mysql 命令中 MYSQL 守护程序的“本地地址”从 127.0.0.1 更改:

到 0:0:0:0 :

此后,MYSQL 开始接受远程连接。 当然,我还是要创建一个远程用户:

CREATE USER 'root'@'remotehostname' IDENTIFIED WITH caching_sha2_password BY 'newpassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'remotehostname' WITH GRANT OPTION;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-08
    • 2012-07-30
    • 2022-08-02
    • 2018-12-05
    • 2019-06-16
    • 2010-12-13
    • 1970-01-01
    • 2016-07-05
    相关资源
    最近更新 更多