通过 HeidiSQL 连接 CentOS 7 中的 MySQL 5.7
本教程将指导如何使用 HeidiSQL 客户端工具连接到已安装在 CentOS 7 服务器(虚拟机、物理机或云服务器)中的 MySQL 5.7 数据库。
软件版本
本文基于以下软件版本进行操作演示。
- 操作系统: CentOS 7.9
- MySQL 版本: 5.7.44
- HeidiSQL 版本: 11.3.0.6295
前提条件
- MySQL 已安装 :确保已在 CentOS 7 中成功安装并运行 MySQL 5.7。如果您尚未安装,请先参考教程:CentOS 7 安装 MySQL 5.7。
- HeidiSQL 已安装:确保已在主机(例如 Windows)上安装了 HeidiSQL 客户端。
- 网络连接 :
- 虚拟机用户 :建议使用 桥接模式(Bridged Mode),确保主机能 ping 通虚拟机 IP。
- 云服务器/物理机用户:确保客户端主机能够访问服务器的 IP 地址(公网 IP 或局域网 IP)。
1. 准备工作
1.1 获取 CentOS 7 服务器 IP 地址
场景 A:虚拟机或局域网物理机
在 CentOS 7 中执行以下命令获取 IP 地址:
bash
ip addr show
# 或者
ifconfig
记录下网卡(通常是 ens33 或 eth0)的 IP 地址,例如:192.168.1.100。
场景 B:云服务器(阿里云/腾讯云/AWS等)
请登录云服务商的控制台,查看该实例的 公网 IP (Public IP) 地址。
注意:云服务器内部 ip addr 通常只显示内网 IP,远程连接需使用公网 IP。
1.2 检查网络连通性
在 Windows 主机上测试是否能够访问服务器:
cmd
ping <服务器IP地址>
如果 ping 不通:
- 虚拟机:检查网络模式(NAT/桥接)。
- 云服务器:检查云厂商的安全组是否允许 ICMP 协议(部分云服务器禁 ping,但不影响连接数据库,可跳过此步)。
1.3 配置 MySQL 允许远程连接
默认情况下,MySQL 只允许本地连接。需要配置允许远程主机连接。
a. 登录 MySQL
bash
mysql -u root -p
b. 创建远程连接用户(推荐)
为了安全起见,建议创建一个专门用于远程连接的用户,而不是直接使用 root 用户:
sql
-- 创建远程连接用户
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!';
-- 授予所有数据库权限(根据需要调整权限)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
c. 或者允许 root 用户远程连接(不推荐用于生产环境)
sql
-- 允许任何主机的 root 用户连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YourRootPassword' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
d. 退出 MySQL
sql
EXIT;
1.4 配置防火墙(关键步骤)
这里涉及两层防火墙,必须同时配置。
第一层:CentOS 系统防火墙 (firewalld)
首先检查 3306 端口是否已经开放:
bash
# 检查已开放的端口
firewall-cmd --list-ports
# 或者直接查询特定端口是否开放
firewall-cmd --query-port=3306/tcp
如果 3306/tcp 不在列表中,或者查询结果显示 "no",则需要开放该端口:
bash
# 永久开放 3306 端口
firewall-cmd --permanent --add-port=3306/tcp
# 重新加载防火墙规则
firewall-cmd --reload
# 再次验证端口是否开放
firewall-cmd --list-ports
第二层:云平台安全组(仅限云服务器用户)
如果是云服务器(如阿里云、腾讯云、AWS),必须要在云控制台的"安全组"或"防火墙"设置中,添加入站规则:
- 协议: TCP
- 端口范围: 3306
- 授权对象: 0.0.0.0/0 (允许所有 IP) 或 仅填写你自己的公网 IP。
如果是虚拟机或内网物理机,通常没有这一层,可忽略。
1.5 检查 MySQL 绑定地址
确保 MySQL 配置文件中没有限制只能本地连接:
bash
# 检查配置文件
cat /etc/my.cnf | grep bind-address
如果有 bind-address = 127.0.0.1 这一行,需要注释掉或修改为:
bash
vi /etc/my.cnf
ini
[mysqld]
# ... 其他配置 ...
# 注释掉或修改这一行
# bind-address = 127.0.0.1
# 或者改为
bind-address = 0.0.0.0
修改后重启 MySQL 服务:
bash
service mysqld restart
2. 下载和安装 HeidiSQL
2.1 下载 HeidiSQL
访问 HeidiSQL 官方网站:https://www.heidisql.com/download.php
下载最新版本的 HeidiSQL 安装程序。
2.2 安装 HeidiSQL
- 运行下载的安装程序
- 按照安装向导完成安装
- 选择默认设置即可
3. 配置 HeidiSQL 连接
3.1 启动 HeidiSQL
安装完成后,启动 HeidiSQL 应用程序。
3.2 创建新连接
- 点击左下角的 "新建" 按钮
- 在弹出的会话管理器中,选择 "MySQL" 作为网络类型
3.3 配置连接参数
在连接设置页面填入以下信息:
| 参数 | 值 | 说明 |
|---|---|---|
| 网络类型 | MySQL (TCP/IP) | 默认选择 |
| 主机名/IP | 192.168.1.100 | 替换为服务器的 IP 地址(虚拟机IP 或 云服务器公网IP) |
| 用户 | remote_user | 或者 root(如果配置了远程访问) |
| 密码 | StrongPassword123! | 设置的密码 |
| 端口 | 3306 | MySQL 默认端口 |
| 数据库 | (留空) | 连接后可以选择数据库 |
3.4 测试连接
- 填写完连接参数后,点击 "打开" 按钮
- 如果配置正确,HeidiSQL 将成功连接到 MySQL 数据库
- 左侧面板将显示数据库列表
4. 常见问题排查
4.1 连接被拒绝 (Connection refused)
可能原因:
- MySQL 服务未启动
- 防火墙阻止了连接
- IP 地址错误
解决方法:
bash
# 检查 MySQL 服务状态
service mysqld status
# 如果未启动,则启动服务
service mysqld start
# 检查端口是否监听
netstat -tlnp | grep 3306
# 检查防火墙状态
firewall-cmd --list-ports
4.2 访问被拒绝 (Access denied)
可能原因:
- 用户名或密码错误
- MySQL 用户没有远程连接权限
解决方法:
sql
-- 重新登录 MySQL 并检查用户权限
mysql -u root -p
-- 查看用户权限
SELECT user, host FROM mysql.user WHERE user='remote_user';
-- 如果没有 % 主机,重新授权
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!';
FLUSH PRIVILEGES;
4.3 网络不可达 / 连接超时
可能原因:
- 云服务器安全组未开放 3306 端口(最常见原因)
- 虚拟机网络配置错误
- IP 地址填写错误
解决方法:
-
云服务器用户:务必登录云控制台,检查实例的安全组规则,确认 3306 端口对入站流量开放。
-
虚拟机用户:确保网络适配器设置为 NAT 或 桥接模式。
-
在本地主机尝试 telnet 测试端口连通性:
cmdtelnet <服务器IP> 3306如果 telnet 无法连接,说明网络或防火墙仍有阻断。
5. 安全建议
- 使用强密码:确保 MySQL 用户密码足够复杂
- 限制用户权限:根据实际需要分配最小权限
- 使用专用用户:避免使用 root 用户进行远程连接
- 定期更新密码:定期更改数据库用户密码
- 网络安全:在生产环境中考虑使用 SSL/TLS 加密连接
6. 连接成功后的操作
连接成功后,可通过 HeidiSQL 执行以下操作:
- 浏览数据库和表结构
- 执行 SQL 查询语句
- 创建、修改和删除数据库对象
- 导入和导出数据
- 管理用户权限
至此,已成功通过 HeidiSQL 连接到 CentOS 7 中的 MySQL 5.7 数据库,可以开始进行数据库管理和开发工作了。