在腾讯云 Ubuntu 服务器上配置 MySQL 远程访问,需要完成以下关键步骤:修改 MySQL 绑定地址、创建允许远程登录的用户、开放防火墙端口、并检查安全组设置。以下是详细操作指南:
✅ 前提条件
- 已安装 MySQL(或 MariaDB),版本 ≥ 5.7/8.0(以
mysql命令为准) - 拥有服务器 root 权限
- 知道 MySQL root 密码(或可重置)
🔧 步骤一:修改 MySQL 监听地址
默认情况下,MySQL 只监听 127.0.0.1,需改为允许外部连接。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 或 /etc/mysql/my.cnf(视发行版而定)
找到 [mysqld] 段,注释掉或修改 bind-address 行:
[mysqld]
# bind-address = 127.0.0.1 ← 注释掉这行
# 或显式指定允许所有 IP(不推荐生产环境):
# bind-address = 0.0.0.0
# 更安全的做法:保留 127.0.0.1,但通过用户授权实现远程访问(见步骤二)
⚠️ 注意:现代最佳实践是 不改
bind-address,而是通过用户权限控制远程访问(更安全)。若必须改,请确保后续配合防火墙和安全组策略。
保存后重启 MySQL:
sudo systemctl restart mysql
# 或 sudo service mysql restart
🔐 步骤二:创建允许远程访问的 MySQL 用户
登录 MySQL:
sudo mysql -u root -p
执行以下 SQL(替换 your_password 和 '%' 为实际值):
-- 方式一:允许任意 IP 远程登录(开发测试可用,生产慎用)
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 方式二(推荐):仅允许特定 IP 或网段(如腾讯云内网或其他可信主机)
-- CREATE USER 'remote_user'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!';
-- GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'remote_user'@'192.168.1.%';
-- FLUSH PRIVILEGES;
✅ 验证用户是否创建成功:
SELECT user, host FROM mysql.user WHERE user='remote_user';
退出 MySQL:
EXIT;
🛡️ 步骤三:配置本地防火墙(UFW)
Ubuntu 默认使用 UFW。需放行 MySQL 端口(默认 3306):
# 查看当前状态
sudo ufw status
# 允许 3306 端口(仅建议从特定 IP 访问)
sudo ufw allow from <你的客户端IP> to any port 3306 proto tcp
# 或临时开放全部(测试用,完成后务必限制)
# sudo ufw allow 3306/tcp
# 启用防火墙(如果未启用)
sudo ufw enable
🔒 生产环境强烈建议:不要开放
0.0.0.0/0,仅允许可信 IP。
☁️ 步骤四:配置腾讯云安全组(关键!)
即使本地防火墙已放行,腾讯云控制台的安全组仍会拦截流量。
- 登录 腾讯云控制台
- 进入 云服务器 CVM → 实例列表 → 找到你的 Ubuntu 实例
- 点击右侧 更多 → 网络与安全组 → 安全组
- 编辑该实例绑定的安全组规则:
- 添加 入方向规则:
- 协议类型:TCP
- 端口范围:
3306 - 来源 IP:填写你的客户端公网 IP(如
203.0.113.5/32)
(或测试时先用0.0.0.0/0,确认无误后立即收紧!) - 动作:允许
- 添加 入方向规则:
- 保存规则(生效通常需几秒~1 分钟)
💡 提示:可通过 ipinfo.io 查询本机公网 IP。
🧪 步骤五:测试远程连接
从本地电脑(非服务器)使用客户端测试:
方法 1:命令行(推荐)
mysql -h <服务器公网IP> -P 3306 -u remote_user -p
输入密码后应能成功登录。
方法 2:图形化工具
- DBeaver / Navicat / MySQL Workbench
- 主机:服务器公网 IP
- 端口:3306
- 用户名:
remote_user - 密码:你设置的密码
🔒 安全加固建议(生产环境必做)
| 措施 | 说明 |
|---|---|
| ✅ 禁用 root 远程登录 | 创建专用应用账号,避免使用 root@% |
| ✅ 限制访问 IP | 安全组 + MySQL 用户 host 字段双重限制 |
| ✅ 使用强密码 | ≥12位,含大小写+数字+符号 |
| ✅ 启用 SSL/TLS | 防止中间人攻击(可选但推荐) |
| ✅ 定期更新补丁 | sudo apt update && sudo apt upgrade |
| ✅ 关闭非必要端口 | 只开放 3306,其他如 22(SSH)也需限 IP |
❌ 常见故障排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
Connection refused |
防火墙/安全组未放行 | 检查 ufw status 和安全组规则 |
Access denied for user... |
用户不存在或权限不足 | 重新创建用户并 FLUSH PRIVILEGES |
Host not allowed |
MySQL 用户 host 不是 % 或对应网段 |
修改用户 host 或重新授权 |
| 连接超时 | 安全组未放通或云厂商网络策略 | 重点检查腾讯云安全组入方向规则 |
完成以上步骤后,即可安全地从远程访问腾讯云 Ubuntu 上的 MySQL 数据库。如有特殊需求(如主从复制、多租户隔离等),可进一步细化配置。需要我提供自动化脚本或 Docker 部署方案吗?
CLOUD技术笔记