在云服务器上部署 MySQL 是后端开发的基础技能。虽然 CentOS 和 Ubuntu 是目前最主流的 Linux 发行版,但需要注意的是,CentOS 8 及更早版本已停止维护(EOL),官方仓库不再提供更新和安全补丁。因此,在实际生产环境中,建议优先使用 Ubuntu 20.04/22.04 LTS 或 Rocky Linux / AlmaLinux(作为 CentOS 的替代品)。
以下分别介绍在 Ubuntu 和 CentOS/Rocky/Alma 上安装 MySQL 8.0 的标准步骤。为了保持环境纯净和安全性,我们采用官方推荐的方式安装。
一、Ubuntu 系统安装 MySQL
Ubuntu 默认的软件源中通常包含 MySQL 8.0,安装过程较为简单。
1. 更新软件包索引
sudo apt update
sudo apt upgrade -y
2. 安装 MySQL Server
sudo apt install mysql-server -y
3. 验证安装状态
systemctl status mysql.service
如果显示 active (running),说明服务已启动。
4. 运行安全脚本(强烈建议)
MySQL 提供了一个安全配置脚本,用于设置 root 密码、移除匿名用户、禁止远程 root 登录等。
sudo mysql_secure_installation
按提示操作:
- 设置 root 密码(建议使用强密码)。
- 删除匿名账户:
Y - 禁止 root 远程登录:
Y - 删除测试数据库:
Y - 刷新权限表:
Y
5. 登录 MySQL
sudo mysql -u root -p
输入刚才设置的密码即可进入。
二、CentOS / Rocky Linux / AlmaLinux 系统安装 MySQL
由于 CentOS 8+ 默认仓库可能不包含最新版 MySQL,推荐使用 MySQL 官方 YUM 仓库 进行安装,以确保获取最新稳定版(如 8.0.x)。
1. 添加 MySQL 官方 YUM 仓库
以 MySQL 8.0 为例:
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
注:如果是 CentOS 7,请使用
yum命令,并将 URL 中的el8改为el7。
2. 禁用默认 AppStream 中的 MySQL 模块(避免冲突)
sudo dnf module disable mysql -y
3. 安装 MySQL Server
sudo dnf install -y mysql-community-server
4. 启动并启用 MySQL 服务
sudo systemctl start mysqld
sudo systemctl enable mysqld
5. 获取临时 Root 密码并初始化安全设置
MySQL 8.0 首次安装时会自动生成一个临时 root 密码。查看日志获取:
sudo grep 'temporary password' /var/log/mysqld.log
复制该密码,然后运行安全脚本:
sudo mysql_secure_installation
按提示操作,包括:
- 输入临时密码。
- 修改 root 密码(需符合复杂度要求:大写、小写、数字、特殊字符,长度≥8)。
- 其余选项均选择
Y。
6. 登录 MySQL
mysql -u root -p
三、基础配置与远程访问设置(通用)
无论哪种系统,若需从外部连接云服务器上的 MySQL,需进行以下配置:
1. 修改 MySQL 监听地址
编辑配置文件:
- Ubuntu:
/etc/mysql/mysql.conf.d/mysqld.cnf - CentOS/Rocky:
/etc/my.cnf或/etc/mysql/my.cnf
找到 [mysqld] 部分,注释掉或修改 bind-address:
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
重启 MySQL 服务使配置生效:
sudo systemctl restart mysql # Ubuntu
sudo systemctl restart mysqld # CentOS
2. 创建允许远程访问的用户(推荐方式)
出于安全考虑,不建议直接开放 root 用户远程登录。建议创建一个新用户并授权:
-- 登录 MySQL 后执行
-- 创建用户(替换 'your_password' 为强密码)
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'your_strong_password';
-- 授权所有数据库权限(生产环境建议限制具体库和权限)
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
3. 配置云安全组(重要!)
仅修改 MySQL 配置是不够的,必须在云平台控制台(如阿里云 ECS、腾讯云 CVM、AWS EC2 等)的安全组中添加规则:
- 协议:TCP
- 端口:3306
- 来源:限制为你的 IP 地址(如
1.2.3.4/32),切勿设置为0.0.0.0/0,以防被暴力破解。
四、常见问题与最佳实践
1. 忘记密码怎么办?
可通过跳过权限表方式重置:
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql -u root
-- 在 MySQL 命令行中执行:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
EXIT;
sudo killall mysqld
sudo systemctl start mysql
2. 性能调优建议
- InnoDB 缓冲池大小:根据服务器内存调整
innodb_buffer_pool_size,通常设为物理内存的 50%-70%。 - 字符集:确保使用
utf8mb4以支持完整 Unicode(包括 Emoji):[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci并在客户端连接时也指定
charset=utf8mb4。
3. 备份策略
- 使用
mysqldump进行逻辑备份:mysqldump -u root -p --all-databases > full_backup.sql - 生产环境建议结合定时任务(cron)自动备份,并上传至对象存储(如 OSS、COS、S3)。
4. 安全加固
- 定期更新 MySQL 版本以修复漏洞。
- 使用防火墙(如
ufw或firewalld)限制 3306 端口仅限应用服务器 IP 访问。 - 启用 MySQL 审计插件(企业版功能)或使用第三方工具监控异常查询。
总结
| 步骤 | Ubuntu | CentOS/Rocky/Alma |
|---|---|---|
| 安装命令 | apt install mysql-server |
dnf install mysql-community-server |
| 服务名 | mysql |
mysqld |
| 配置文件路径 | /etc/mysql/mysql.conf.d/mysqld.cnf |
/etc/my.cnf |
| 安全脚本 | mysql_secure_installation |
mysql_secure_installation |
| 远程访问注意 | 修改 bind-address + 安全组放行 |
同上 |
请根据你的操作系统选择合适的安装流程,并始终遵循最小权限原则和安全规范。如有特定场景需求(如主从复制、集群部署),可进一步探讨。
CLOUD云枢