本地 navicat 客户端死活连接不上云服务上的数据库?

如果你的云服务器使用的是 CentOS 操作系统,你可以通过以下步骤来检查和配置防火墙,确保 3306 端口开放。

1. 检查并开放 3306 端口(Firewalld)

CentOS 默认使用 firewalld 来管理防火墙规则。你可以按照以下步骤操作:

检查 firewalld 状态

首先,检查 firewalld 是否正在运行:

sudo systemctl status firewalld

如果没有启动,可以使用以下命令启动 firewalld

sudo systemctl start firewalld

开放 3306 端口

如果 firewalld 正在运行,可以执行以下命令来开放 3306 端口(MySQL 默认端口):

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

这样,3306 端口就会被永久开放,并且规则会立即生效。

验证端口是否开放

你可以使用以下命令验证防火墙规则:

sudo firewall-cmd --list-all

如果成功,你应该能在输出中看到 3306/tcp 端口。

2. 检查 MySQL 是否在监听 3306 端口

确保 MySQL 服务正在监听 3306 端口。你可以使用以下命令来检查:

sudo netstat -tuln | grep 3306

如果 MySQL 正在监听,输出应该类似于:

tcp   0   0 0.0.0.0:3306    0.0.0.0:*      LISTEN

3. 检查 MySQL 配置文件

MySQL 的配置文件可能限制了它仅允许本地连接。打开 MySQL 配置文件 /etc/my.cnf,检查 bind-address 设置:

sudo vi /etc/my.cnf

确保 bind-address 配置为 0.0.0.0(允许来自任何 IP 地址的连接),而不是仅限于 127.0.0.1(仅允许本地连接):

[mysqld]
bind-address = 0.0.0.0

修改后,保存并退出配置文件,然后重启 MySQL 服务:

sudo systemctl restart mysqld

4. MySQL 用户权限设置

确保 MySQL 用户有权限从本地计算机的 IP 地址连接。如果使用的用户没有远程连接的权限,需要执行以下 SQL 语句来授权:

GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;

这里的 your_username 是你用来连接 MySQL 的用户名,your_password 是密码,% 表示任何 IP 地址都可以连接。

总结

完成以上配置后,本地应该能够成功连接到云服务器上的 MySQL 数据库。

回帖
请输入回帖内容 ...