在 Linux 系统中,如果你需要从外部网络访问 MySQL 服务,通常需要以下几个步骤:
一、基本概念
- MySQL 服务监听端口:默认是
3306。 - 防火墙设置:需要开放
3306端口。 - 网络配置:确保 MySQL 服务正在运行,并且监听
0.0.0.0或127.0.0.1。
二、步骤详解
1. 检查 MySQL 服务状态
systemctl status mysql
或
service mysql status
如果服务未运行,启动它:
sudo systemctl start mysql
2. 开放防火墙端口
使用 ufw(Ubuntu/Debian)或 firewalld(CentOS/RHEL):
Ubuntu/Debian:
sudo ufw allow 3306/tcp
sudo ufw enable
CentOS/RHEL:
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
3. 检查 MySQL 是否监听 0.0.0.0
sudo netstat -tuln | grep 3306
或
ss -tuln | grep 3306
如果显示 0.0.0.0,说明监听正确。
4. 从外部访问 MySQL
你可以使用 telnet 或 nc(Netcat)来测试连接:
telnet <IP地址> 3306
或者使用 nc:
nc <IP地址> 3306
如果连接成功,说明外部访问正常。
三、使用 mysql 命令行工具访问
如果你有 MySQL 用户和密码,可以通过以下命令从外部访问:
mysql -h <IP地址> -u <用户名> -p<密码> -e "SHOW DATAbaseS;"
四、使用 curl 或 telnet 从命令行访问
curl -v http://<IP地址>:3306
或者
telnet <IP地址> 3306
五、常见问题排查
- 端口未开放:检查防火墙设置。
- 服务未运行:检查服务状态。
- 连接失败:检查用户名、密码、主机名是否正确。
六、总结
| 操作 | 命令 |
|---|---|
| 检查服务状态 | systemctl status mysql |
| 开放端口 | ufw allow 3306/tcp |
| 检查监听地址 | netstat -tuln | grep 3306 |
| 从外部访问 | telnet <IP> 3306 或 mysql -h <IP> -u... |
如需进一步配置 MySQL 的访问控制(如 bind-address、skip-name-resolve 等),也可以告诉我,我可以提供更详细的配置指南。


