努力
加油

CentOS系统的云服务器怎么安装MySQL?

在 CentOS 系统上安装 MySQL,目前主要有两种主流路径:一种是使用官方提供的 YUM 仓库(推荐,适合大多数生产环境),另一种是直接下载 RPM 包手动安装(适合离线环境或特定版本需求)。

考虑到国内网络环境和稳定性,强烈建议使用第一种方式。以下是基于 CentOS 7/8 的标准操作流程,以 MySQL 8.0 为例(这是目前最通用的长期支持版本)。

核心步骤概览

  1. 添加 MySQL 官方 YUM 源
  2. 安装 MySQL Server
  3. 启动服务并设置开机自启
  4. 获取初始密码并修改 root 密码
  5. 配置远程访问权限(可选但常用)

详细操作指南

第一步:添加 MySQL 官方 YUM 源

不要直接用 yum install mysql-server,因为那通常会安装 MariaDB(CentOS 7 的默认替代品)或者非常老旧的版本。我们需要指向 MySQL 官方的仓库。

执行以下命令下载并安装 MySQL 8.0 的 repo 文件:

sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm -y

注意:如果你需要安装其他版本(如 5.7),请将上述链接中的 mysql80 替换为 mysql57。建议通过 yum repolist all | grep mysql 检查当前启用的版本子库,确保 mysql80 是 enabled 状态。

第二步:安装 MySQL Server

源配置好后,直接运行安装命令:

sudo yum install mysql-community-server -y

这个过程可能需要几分钟,取决于你的服务器带宽和 CPU 性能。安装完成后,你会看到 “Complete!” 提示。

第三步:启动服务并设置开机自启

# 启动 MySQL 服务
sudo systemctl start mysqld

# 设置开机自启动
sudo systemctl enable mysqld

# 查看服务状态,确认是否正常运行
sudo systemctl status mysqld

如果状态显示 active (running),说明服务已正常启动。

第四步:安全初始化与修改 Root 密码

MySQL 8.0 在安装后会生成一个临时的随机密码,存储在日志文件中。你需要先找到它,然后立即修改。

1. 查找临时密码:

sudo grep 'temporary password' /var/log/mysqld.log

输出类似如下内容:
[Note] A temporary password is generated for root@localhost: abc123!XYZ

记下冒号后面的字符串(例如 abc123!XYZ)。

2. 运行安全脚本(强烈建议):

sudo mysql_secure_installation

按提示操作:

  • VALIDATE PASSWORD COMPONENT: 询问是否启用密码强度验证插件。生产环境建议选 Y(1表示低,2表示中,3表示高)。
  • Change the root password?: 输入 Y,然后输入你刚才找到的临时密码进行验证,接着设置一个新的、符合复杂度要求的 root 密码。
  • Remove anonymous users?: 选 Y。
  • Disallow root login remotely?: 选 N(如果你想允许远程连接,这里先选 N,后续再单独配置用户权限;如果只允许本地登录,选 Y)。
  • Remove test database?: 选 Y。
  • Reload privilege tables now?: 选 Y。

替代方案(如果不运行脚本):

你也可以直接登录 MySQL 命令行修改密码:

mysql -u root -p
# 输入临时密码进入后,执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新强密码';
FLUSH PRIVILEGES;
exit;

第五步:配置远程访问(云服务器必备)

默认情况下,MySQL 只允许本地 localhost 登录。作为云服务器,你通常需要远程连接管理数据库。

1. 防火墙放行端口:

如果是阿里云、腾讯云等厂商,除了系统内部防火墙,还需要在云控制台的“安全组”中放行 3306 端口(TCP)。

在系统内部,如果使用 firewalld:

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

2. 创建允许远程登录的用户(推荐做法):

出于安全考虑,不建议直接给 root@'%' 授权。建议创建一个专门用于远程连接的用户。

mysql -u root -p

进入 MySQL 后执行:

-- 创建新用户,% 表示允许任意 IP 连接
CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_strong_password';

-- 授予所有权限(生产环境建议最小权限原则,如仅 grant select, insert, update, delete)
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' WITH GRANT OPTION;

-- 刷新权限
FLUSH PRIVILEGES;
EXIT;

重要提示:MySQL 8.0 默认的认证插件是 caching_sha2_password。部分旧版客户端(如 Navicat 旧版本、某些 Java 驱动)可能不支持。如果遇到连接报错,可以将该用户的认证方式改回 mysql_native_password:

ALTER USER 'your_username'@'%' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
FLUSH PRIVILEGES;

常见问题排查

  1. 启动失败?
    检查 /var/log/mysqld.log,通常是因为数据目录权限问题或端口冲突。确保没有其他程序占用 3306 端口:netstat -tuln | grep 3306。

  2. 忘记密码怎么办?

    • 停止服务:sudo systemctl stop mysqld
    • 跳过权限表启动:sudo mysqld_safe --skip-grant-tables &
    • 无密码登录 MySQL,然后执行 UPDATE mysql.user SET authentication_string=PASSWORD('newpassword') WHERE User='root';
    • 重启服务恢复正常模式。
  3. 字符集乱码?
    MySQL 8.0 默认字符集通常是 utf8mb4,一般无需额外配置。如果发现中文乱码,检查 my.cnf(通常在 /etc/my.cnf 或 /etc/my.cnf.d/ 下)中的 [mysqld] 段,确保包含:

    character-set-server=utf8mb4
    collation-server=utf8mb4_unicode_ci

    修改后重启服务。

总结

对于 CentOS 云服务器,YUM 安装 + 官方源 是最稳定、最易维护的方式。务必记得处理临时密码、防火墙/安全组以及远程用户权限这三个关键点。如果是生产环境,建议定期备份数据,并考虑使用云厂商提供的 RDS 服务以减少运维负担。