在云服务器上部署 MySQL,核心在于版本选择、源配置以及安全加固。CentOS 和 Ubuntu 的包管理器不同(yum/dnf vs apt),但逻辑一致。
以下分系统给出最稳定、标准的安装流程。默认安装 MySQL 8.0(当前主流 LTS 版本)。
一、Ubuntu 20.04/22.04/24.04 安装步骤
Ubuntu 官方源直接提供 MySQL,无需额外添加第三方源。
1. 更新软件包索引
sudo apt update
sudo apt upgrade -y
2. 安装 MySQL Server
sudo apt install mysql-server -y
注意:Ubuntu 的
mysql-server包会自动处理依赖并启动服务。
3. 验证服务状态
sudo systemctl status mysql
如果显示 active (running),则安装成功。若未运行,执行:
sudo systemctl start mysql
sudo systemctl enable mysql
4. 运行安全脚本(关键)
MySQL 安装后自带一个安全配置脚本,用于设置 root 密码、移除匿名用户、禁止远程 root 登录等。
sudo mysql_secure_installation
按提示操作:
VALIDATE PASSWORD COMPONENT:建议选Y,并选择强度等级(推荐 Level 1 或 2)。Change the root password?:选Y,设置强密码。Remove anonymous users?:选Y。Disallow root login remotely?:选Y(生产环境强烈建议禁止 root 远程登录,后续创建专用账号)。Remove test database and access to it?:选Y。Reload privilege tables now?:选Y。
5. 测试连接
sudo mysql -u root -p
输入刚才设置的密码,若能进入 mysql> 交互界面,则安装完成。
二、CentOS 7/8/9 Stream 安装步骤
CentOS 7 使用 yum,CentOS 8+ 使用 dnf。MySQL 官方源需手动添加。
1. 添加 MySQL Yum 仓库
CentOS 8/9 Stream:
# 下载 MySQL 8.0 仓库配置
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el8-6.noarch.rpm
CentOS 7:
# 下载 MySQL 8.0 仓库配置
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
2. 安装 MySQL Server
# CentOS 8/9
sudo dnf install mysql-server -y
# CentOS 7
sudo yum install mysql-server -y
3. 启动并启用服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld
4. 获取临时 Root 密码(CentOS 特有步骤)
CentOS 安装 MySQL 后,root 用户会生成一个临时密码,记录在日志中。
sudo grep 'temporary password' /var/log/mysqld.log
复制输出的临时密码(如 A&Bz...xyz)。
5. 运行安全脚本
sudo mysql_secure_installation
按提示操作:
- 输入上一步获取的临时密码。
- 系统会要求修改 root 密码(必须满足复杂度要求:大写、小写、数字、特殊字符,至少8位)。
- 后续选项与 Ubuntu 相同:移除匿名用户、禁止远程 root 登录、删除测试库、重载权限表。全部选
Y。
6. 测试连接
mysql -u root -p
输入新设置的密码,进入交互式界面即成功。
三、通用后续配置(可选但推荐)
1. 创建专用数据库用户(最佳实践)
不要直接用 root 连接应用。
-- 登录 MySQL
mysql -u root -p
-- 创建新用户
CREATE USER 'app_user'@'%' IDENTIFIED BY 'YourStrongPassword123!';
-- 授予权限(示例:授予所有库的所有权限,生产环境请最小化授权)
GRANT ALL PRIVILEGES ON *.* TO 'app_user'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
2. 配置远程访问(如需外部连接)
MySQL 默认只监听本地 127.0.0.1。
编辑配置文件:
- Ubuntu:
/etc/mysql/mysql.conf.d/mysqld.cnf - CentOS:
/etc/my.cnf或/etc/mysql/my.cnf
找到 [mysqld] 部分,注释掉或修改:
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
重启服务:
sudo systemctl restart mysql # Ubuntu
sudo systemctl restart mysqld # CentOS
⚠️ 安全警告:开放
0.0.0.0后,务必确保:
- 云服务器的安全组/防火墙已放行 3306 端口。
- 仅允许特定 IP 访问(通过防火墙规则限制,而非 MySQL 用户主机
%)。- 使用强密码,并考虑启用 SSL 连接。
3. 防火墙配置
Ubuntu (UFW):
sudo ufw allow 3306/tcp
sudo ufw reload
CentOS (firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
四、常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
Access denied for user 'root'@'localhost' |
密码错误或认证插件不匹配 | 使用 sudo mysql 无密码登录,然后重置密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; |
| 服务无法启动 | 端口冲突或数据目录权限错误 | 检查 /var/log/mysql/error.log 或 /var/log/mysqld.log 查看详细错误 |
| 远程连接超时 | 云服务器安全组未放行 | 登录云控制台,检查入站规则是否允许 TCP 3306 端口 |
plugin caching_sha2_password 报错 |
旧版客户端不支持 MySQL 8 默认认证插件 | 将用户认证方式改回 mysql_native_password:ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password'; |
总结
- Ubuntu:
apt install mysql-server→mysql_secure_installation,简单直接。 - CentOS:添加官方 Yum 源 →
dnf/yum install mysql-server→ 获取临时密码 →mysql_secure_installation,步骤稍多但更可控。 - 生产环境核心原则:禁用 root 远程登录、使用强密码、最小化用户权限、通过云防火墙控制访问 IP。
云知道CLOUD