在 CentOS 或 Ubuntu 云服务器上安装 MySQL 的完整步骤需根据操作系统版本和官方推荐方式选择(强烈建议使用 MySQL 官方 APT/YUM 仓库或系统默认包管理器安装,避免手动编译或下载二进制包带来的兼容性与安全风险)。以下是 2024 年推荐的生产级安装方案,涵盖两种主流发行版(Ubuntu 22.04/24.04 和 CentOS Stream 8/9 / Rocky Linux 8/9),并强调安全性、初始化配置和云环境注意事项:
✅ 前提检查(所有系统)
# 1. 更新系统
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
sudo dnf update -y # CentOS/RHEL/Rocky 8+
sudo yum update -y # CentOS 7(已 EOL,不推荐)
# 2. 检查是否已安装 MariaDB(云镜像常预装,需卸载冲突项)
sudo systemctl list-unit-files | grep -i mariadb
# 若存在且未使用,建议卸载(避免端口/服务冲突):
sudo apt remove --purge mariadb-server mariadb-client -y # Ubuntu
sudo dnf remove mariadb-server mariadb -y # RHEL/CentOS 8+
🐧 Ubuntu(22.04 LTS / 24.04 LTS)安装 MySQL 8.0+
✅ 官方源默认提供 MySQL 8.0+(Ubuntu 22.04+ 默认为 8.0.33+;24.04 为 8.0.36+)
步骤 1:安装 MySQL 服务
sudo apt update
sudo apt install mysql-server -y
步骤 2:启动并启用开机自启
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql # ✅ 验证运行状态(Active: active (running))
步骤 3:运行安全初始化(关键!)
sudo mysql_secure_installation
按提示操作(推荐选项):
Press y|Y for Yes, any other key for No:→ Y(设置密码强度策略)New password:→ 🔑 设置强 root 密码(如MyPass@2024!)Re-enter new password:→ 再次输入- 后续全部选 Y(删除匿名用户、禁止远程 root 登录、移除 test 数据库、重载权限表)
⚠️ 注意:Ubuntu 默认使用
auth_socket插件认证 root,mysql_secure_installation会自动切换为caching_sha2_password并要求设密码。
步骤 4:验证登录
sudo mysql -u root -p # 输入刚设的密码
# 成功后执行:
SELECT USER(), CURRENT_USER();
EXIT;
✅ 可选:允许远程访问(仅限云服务器需网络连接时)
sudo mysql -u root -p
-- 1. 创建专用管理用户(替代直接开放 root 远程)
CREATE USER 'admin'@'%' IDENTIFIED WITH caching_sha2_password BY 'StrongPass@2024!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
-- 2. 修改绑定地址(Ubuntu 默认 bind-address = 127.0.0.1)
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 找到行:bind-address = 127.0.0.1 → 改为:
bind-address = 0.0.0.0 # 或指定云服务器内网IP(更安全)
-- 3. 重启服务
sudo systemctl restart mysql
-- 4. 配置云防火墙(必须!)
# Ubuntu UFW 示例:
sudo ufw allow from 203.0.113.10 to any port 3306 # 仅允许可信IP
# 或(不推荐)开放全部:sudo ufw allow 3306
🐘 CentOS / Rocky Linux / AlmaLinux(8 或 9)
✅ 推荐使用 MySQL 官方 YUM 仓库(比系统自带 mariadb 更可控,且提供最新稳定版 MySQL 8.0+)
步骤 1:添加 MySQL 官方 YUM 仓库
# 下载并安装 MySQL YUM repo(以 MySQL 8.0 为例)
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el$(rpm -E '%{rhel}')-1.noarch.rpm -y
# 验证仓库启用状态
sudo dnf repolist enabled | grep mysql
步骤 2:安装 MySQL 社区服务器
# 确保启用 mysql80-community(禁用 mysql57-community 等旧版本)
sudo dnf config-manager --disable mysql57-community
sudo dnf config-manager --enable mysql80-community
sudo dnf install mysql-community-server -y
步骤 3:启动并启用服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld # ✅ 应显示 active (running)
步骤 4:获取临时 root 密码 & 初始化安全配置
# 查看初始密码(首次启动自动生成)
sudo grep 'temporary password' /var/log/mysqld.log
# 登录 MySQL(使用临时密码)
sudo mysql -u root -p
# 在 MySQL 中立即修改 root 密码(MySQL 8.0+ 强制要求):
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'YourStrongPass@2024!';
FLUSH PRIVILEGES;
EXIT;
步骤 5:运行安全脚本(可选但推荐)
sudo mysql_secure_installation
# 同样按提示设密码、删匿名用户、禁远程 root 等(Y/Y/Y/Y/Y)
✅ 可选:配置远程访问(CentOS/Rocky)
sudo mysql -u root -p
-- 创建远程管理用户
CREATE USER 'admin'@'%' IDENTIFIED WITH caching_sha2_password BY 'StrongPass@2024!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# 修改配置文件
sudo nano /etc/my.cnf
# 在 [mysqld] 段下添加:
bind-address = 0.0.0.0
# 或更安全:bind-address = 192.168.1.100 (云服务器内网IP)
sudo systemctl restart mysqld
🔥 配置防火墙(CentOS/Rocky 必须!)
# Rocky Linux 8+/CentOS 8+ 使用 firewalld
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --permanent --add-source=203.0.113.10/32 # 仅允许可信IP
sudo firewall-cmd --reload
# 或(不推荐)放行所有:
# sudo firewall-cmd --permanent --add-service=mysql
# sudo firewall-cmd --reload
🛡️ 云服务器通用安全加固(强烈建议)
| 项目 | 操作 |
|---|---|
| 1. 修改默认端口 | 编辑 /etc/my.cnf → port = 3307(需同步调整防火墙规则) |
| 2. 禁用符号链接(防文件读取漏洞) | secure-file-priv = /var/lib/mysql-files/(在 [mysqld] 下) |
| 3. 启用错误日志审计 | log_error = /var/log/mysql/error.log + log_warnings = 2 |
| 4. 定期备份 | 使用 mysqldump + cron 或 mysqlbackup |
| 5. 监控连接数 | SHOW STATUS LIKE 'Threads_connected'; |
✅ 验证安装成功
# 本地连接测试
mysql -u admin -p -h 127.0.0.1 -P 3306 -e "SELECT VERSION();"
# 远程连接测试(从本地电脑):
mysql -u admin -p -h your-server-ip -P 3306
❌ 常见问题速查
| 现象 | 解决方案 |
|---|---|
Can't connect to local MySQL server |
检查 systemctl status mysqld;确认 socket=/var/lib/mysql/mysql.sock 路径正确 |
Access denied for user 'root'@'localhost' |
Ubuntu 用 sudo mysql;CentOS 检查临时密码或重置:sudo mysqld --skip-grant-tables &(仅应急) |
Authentication plugin 'caching_sha2_password' cannot be loaded |
客户端太旧 → 升级 MySQL client 或创建兼容用户:CREATE USER 'oldapp'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd'; |
| 云服务器无法远程连接 | ✅ 检查:① bind-address;② 云平台安全组(阿里云/腾讯云/AWS 控制台开放 3306);③ 系统防火墙(ufw/firewalld);④ MySQL 用户 host 是否为 % |
📌 总结推荐(2024 生产环境)
| 系统 | 推荐方式 | 版本 | 备注 |
|---|---|---|---|
| Ubuntu 22.04/24.04 | apt install mysql-server |
8.0.x | 最简、最稳定,社区支持好 |
| Rocky Linux 8/9 / CentOS Stream 8/9 | MySQL 官方 YUM 仓库 | 8.0.x | 避免 mariadb,获取官方更新与补丁 |
| 旧 CentOS 7 | ❌ 已 EOL,请升级系统;若必须用,仅限内网且禁用远程访问 |
💡 最后提醒:
- 生产环境绝不使用 root 远程登录,务必创建最小权限专用用户;
- 所有密码使用 12位以上、大小写字母+数字+符号;
- 每次安装后立即执行
mysql_secure_installation;- 定期
sudo apt update && sudo apt upgrade或sudo dnf update。
如需我为你生成 一键安装脚本(含安全配置、防火墙、备份任务)、或配置 主从复制/SSL加密连接/Percona Toolkit 优化,欢迎随时告知! 🚀
云知识CLOUD