在腾讯云上使用CentOS系统部署MySQL 8.0的操作指南?

在腾讯云上使用 CentOS 系统部署 MySQL 8.0,推荐通过官方 YUM 源安装(比源码编译更稳定、易维护)。以下是完整操作指南:


✅ 前置准备

  1. 登录腾讯云控制台

    • 创建一台 CentOS 7/8 实例(建议 ≥2GB 内存,≥20GB 磁盘)
    • 确保已配置安全组规则:开放 3306 端口(仅允许信任 IP,生产环境务必限制来源)
    • 实例内网 IP 可访问公网(如需网络连接数据库)
  2. 更新系统 & 清理旧版本

    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

按提示操作:

  1. 输入临时密码 → 登录成功
  2. 设置新 root 密码(满足复杂度要求)
  3. 删除匿名用户?→ Y
  4. 禁止 root 远程登录?→ Y(除非明确需要)
  5. 移除 test database?→ Y
  6. 重新加载权限表?→ 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 应用连接的示例代码?
    欢迎告诉我您的具体场景,我可进一步定制方案。