在腾讯云上使用 CentOS 系统部署 MySQL 8.0,推荐通过官方 YUM 源安装(比源码编译更稳定、易维护)。以下是完整操作指南:
✅ 前置准备
-
登录腾讯云控制台
- 创建一台 CentOS 7/8 实例(建议 ≥2GB 内存,≥20GB 磁盘)
- 确保已配置安全组规则:开放 3306 端口(仅允许信任 IP,生产环境务必限制来源)
- 实例内网 IP 可访问公网(如需网络连接数据库)
-
更新系统 & 清理旧版本
sudo yum update -y # 若存在旧 MySQL,先卸载(避免冲突) sudo yum remove mysql mysql-server mysql-libs mariadb* -y sudo rm -rf /var/lib/mysql /etc/my.cnf
📦 安装 MySQL 8.0(官方 YUM 源方式)
步骤 1:添加 MySQL 官方 YUM 仓库
# 下载并安装 MySQL APT 仓库(CentOS 7/8 通用)
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# CentOS 8 用户请将 el7 改为 el8:mysql80-community-release-el8-1.noarch.rpm
sudo rpm -Uvh mysql80-community-release-el7-1.noarch.rpm
💡 提示:若网络慢,可替换为国内镜像(如阿里云镜像站),但需确认 RPM 包完整性。
步骤 2:安装 MySQL Server
# 默认安装社区版 8.0(可选指定版本:yum install mysql-community-server-8.0.x)
sudo yum install mysql-community-server -y
步骤 3:启动服务并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo systemctl status mysqld # 确认运行状态
步骤 4:获取临时 root 密码
MySQL 8.0 首次安装后,root 密码随机生成,记录日志中的临时密码:
sudo grep 'temporary password' /var/log/mysqld.log
输出示例:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Abc123!xyz
🔐 初始化安全配置(强烈建议!)
执行 mysql_secure_installation 交互式脚本:
sudo mysql_secure_installation
按提示操作:
- 输入临时密码 → 登录成功
- 设置新 root 密码(满足复杂度要求)
- 删除匿名用户?→
Y - 禁止 root 远程登录?→
Y(除非明确需要) - 移除 test database?→
Y - 重新加载权限表?→
Y
⚠️ 若需允许远程连接(如应用服务器不在同一 VPC),后续需手动授权(见下文)。
🌐 允许远程连接(按需配置)
方法一:修改配置文件(推荐用于X_X场景)
编辑 /etc/my.cnf:
[mysqld]
bind-address = 0.0.0.0
skip-name-resolve
重启服务:
sudo systemctl restart mysqld
方法二:在 MySQL 中授权用户(更安全)
sudo mysql -p
# 输入刚设置的 root 密码
-- 进入 MySQL 命令行后执行:
CREATE USER 'your_user'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
✅ 建议:将
%替换为具体内网网段(如192.168.1.%),提升安全性。
防火墙与安全组联动
- 腾讯云控制台 → 实例 → 安全组 → 添加入方向规则:
- 协议:TCP
- 端口:3306
- 来源:
0.0.0.0/0(测试用)或指定 IP/CIDR(生产必做)
- 云服务器内部防火墙(firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
🔍 验证安装
mysql -u root -p
SHOW DATABASES;
SELECT VERSION();
应显示 MySQL 8.0.x 版本信息。
🛡️ 最佳实践建议
| 项目 | 建议 |
|---|---|
| 备份 | 使用 mysqldump + 定时任务,或开启腾讯云 DBS 自动备份 |
| 监控 | 接入云监控(CloudMonitor),设置 CPU/内存/连接数告警 |
| 高可用 | 生产环境建议使用 TDSQL-C(原 CDB) 托管服务,免运维 |
| 性能优化 | 根据业务调整 innodb_buffer_pool_size(建议物理内存 50%~70%) |
| SSL 加密 | 启用 TLS 保障传输安全(参考 MySQL 8.0 SSL 文档) |
❓ 常见问题
-
Q: 无法连接远程?
A: 检查三点:① 安全组放行 3306;②bind-address是否为0.0.0.0;③ 用户是否授权了%主机。 -
Q: 忘记 root 密码?
A: 停止服务 → 以--skip-grant-tables模式启动 → 重置密码 → 重启服务。 -
Q: 能否用 Docker 部署?
A: 可以,但生产环境推荐原生安装(性能更好、调试更直观);Docker 适合开发测试。
需要我提供:
- 自动化部署 Shell 脚本?
- MySQL 参数调优模板?
- 与 Python/Java 应用连接的示例代码?
欢迎告诉我您的具体场景,我可进一步定制方案。
PHPWP博客