在新购的 Linux 云服务器上部署 MySQL 数据库,通常有几种主流方式。以下是最常用、最推荐的方式(以 CentOS/RHEL 和 Ubuntu/Debian 为例),包括安装、配置、安全设置和远程访问开启。
✅ 一、选择你的 Linux 发行版
不同发行版的包管理器不同:
- CentOS / RHEL / Alibaba Cloud Linux → 使用
yum或dnf - Ubuntu / Debian → 使用
apt
📦 二、安装 MySQL
1. CentOS / RHEL / Alibaba Cloud Linux
# 更新系统
sudo yum update -y
# 安装 MySQL Server(CentOS 8+ 默认使用 mysql-community-server)
sudo yum install mysql-server -y
# 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 检查状态
sudo systemctl status mysqld
💡 注意:CentOS 7 可能使用
mariadb作为默认 MySQL 兼容版本。如需官方 MySQL,需先添加 MySQL Yum Repository。
添加 MySQL Yum Repository(CentOS 7 示例):
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum install mysql-community-server -y
2. Ubuntu / Debian
# 更新软件源
sudo apt update
# 安装 MySQL Server
sudo apt install mysql-server -y
# 启动并设置开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
# 检查状态
sudo systemctl status mysql
🔐 三、初始化安全设置
MySQL 安装后建议运行安全脚本:
sudo mysql_secure_installation
按提示操作:
- VALIDATE PASSWORD COMPONENT:是否启用密码强度验证?(建议选 Y)
- Change root password?:设置 root 密码(强烈建议设置)
- Remove anonymous users?:删除匿名账户 → Y
- Disallow root login remotely?:禁止 root 远程登录 → Y(稍后手动创建专用用户)
- Remove test database?:删除测试数据库 → Y
- Reload privilege tables now?:立即重新加载权限表 → Y
👤 四、创建专用数据库用户(推荐)
不要直接用 root 进行日常连接!
sudo mysql -u root -p
进入 MySQL 命令行后执行:
-- 创建新用户(替换 'myuser' 和 'mypassword')
CREATE USER 'myuser'@'%' IDENTIFIED BY 'StrongPassword123!';
-- 授予所有权限(或按需限制)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
⚠️
'myuser'@'%'表示允许从任意 IP 连接。生产环境中建议指定具体 IP,如'myuser'@'192.168.1.100'。
🌐 五、开放防火墙端口(3306)
1. 云服务器安全组(必须做!)
登录云服务商控制台(阿里云、腾讯云、AWS 等):
- 找到你的实例 → 安全组规则
- 添加入方向规则:
- 协议:TCP
- 端口范围:3306
- 来源:建议限制为你的应用服务器 IP(如
192.168.1.100/32),切勿设为0.0.0.0/0!
2. 系统防火墙(如 firewalld 或 ufw)
CentOS(firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
Ubuntu(ufw):
sudo ufw allow 3306/tcp
sudo ufw reload
🛠 六、配置 MySQL 允许远程访问(可选但常见)
编辑 MySQL 配置文件:
# CentOS
sudo vi /etc/my.cnf.d/mysql-server.cnf
# Ubuntu
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
找到 [mysqld] 部分,注释掉或修改:
# bind-address = 127.0.0.1 ← 注释掉这行,或改为 0.0.0.0
bind-address = 0.0.0.0 ← 允许监听所有网卡
重启 MySQL:
sudo systemctl restart mysqld # CentOS
sudo systemctl restart mysql # Ubuntu
✅ 七、测试连接
从另一台机器测试连接:
mysql -h <服务器公网IP> -P 3306 -u myuser -p
输入密码后若能成功进入 MySQL 命令行,说明部署成功!
🧪 八、(可选)创建测试数据库
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myuser'@'%';
FLUSH PRIVILEGES;
📝 九、最佳实践建议
| 项目 | 建议 |
|---|---|
| 密码策略 | 使用强密码,定期更换 |
| 最小权限原则 | 不为应用分配 ALL PRIVILEGES ON *.*,只授予必要库权限 |
| 备份策略 | 定期使用 mysqldump 或云厂商备份功能 |
| 监控日志 | 开启慢查询日志,监控性能 |
| 更新补丁 | 定期 yum update 或 apt upgrade 保持安全 |
| 禁用 root 远程登录 | 始终通过专用用户连接 |
❓ 常见问题排查
-
连接被拒绝?
- 检查安全组是否开放 3306
- 检查
bind-address是否为0.0.0.0 - 检查用户主机权限(
'myuser'@'%'vs'myuser'@'localhost')
-
忘记 root 密码?
sudo systemctl stop mysqld sudo mysqld_safe --skip-grant-tables & mysql -u root FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; EXIT; sudo killall mysqld sudo systemctl start mysqld -
中文乱码?
确保客户端和服务端字符集一致,推荐utf8mb4:[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
🎯 总结流程图
购买云服务器 → 安装 MySQL → 安全初始化 → 创建专用用户 → 开放安全组+防火墙 → 配置远程访问 → 测试连接 → 创建业务数据库
按照以上步骤,你可以在几分钟内完成 MySQL 的安全部署。如有特定场景(如主从复制、Docker 部署、高可用架构),可进一步扩展。
轻量云Cloud