mysql - 无法通过 3306 端口连接到远程 MYSQL 服务器
问题描述
我已经花了 6 个多小时试图解决这个问题。安装 mysql 服务器后,我显然将 bind-address 从 127.0.0.1 更改为 0.0.0.0。我也尝试将其注释掉。当我使用 Nmap 检查开放端口状态时,它显示如下:
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000011s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
23/tcp open telnet
3306/tcp open mysql
所以3306端口肯定是开放的。但是,当我尝试从另一台机器连接服务器时,它显示:
ERROR 2003 (HY000): Can't connect to MySQL server on '49.247.XXX.XXX' (61)
所以我用 telnet 检查它,结果是:
telnet: connect to address 49.247.XXX.XXX: Connection refused
telnet: Unable to connect to remote host
所以我回到那台服务器机器,再次使用 netstat 检查状态,结果如下:
❯ sudo netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 769/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 994/sshd
tcp6 0 0 :::22 :::* LISTEN 994/sshd
tcp6 0 0 :::23 :::* LISTEN 3355/xinetd
tcp6 0 0 :::3306 :::* LISTEN 4108/mysqld
我找到了 3306 号,所以它必须是开放的,对吗?我什至尝试了“sudo ufw allow XXXX/tcp”命令以确保 3306 已打开。但是,我对缺少的东西一无所知。有谁知道要寻找什么或如何解决这个问题?提前非常感谢!
解决方案
您还需要设置防火墙。
安装 Firewalld 并执行以下操作:
firewall-cmd --zone=public --add-port=3306/tcp \ --permanent
这将确保 3306 是开放和接受的。
推荐阅读
- jenkins - 是否可以在 groovy 声明性管道中从抛出的异常中抑制堆栈跟踪?
- javascript - 正则表达式匹配不同情况下字符之前或之后的内容
- node.js - 向数据库添加新卡
- javascript - 将 Pdf.js 集成到 blazor 应用程序中
- azure - 删除资源组时如何运行脚本?
- python - 如何将模块导入 Jupyter Notebook 内核
- vb.net - 如何在vb中使图片框下降
- python - 如果没有找到空值,则打印一个字符串
- javascript - TypeORM,将当前 transactionalEntityManager 传递给实体方法
- c# - Unity android apk 突然变大了?