mysql在Linux环境中通过yum方式安装详细步骤

8次阅读

MySQL 官方版在 RHEL/CentOS/AlmaLinux/Rocky Linux 8+ 上需通过 dnf 添加官方 YUM 仓库安装,直接 yum install mysql 会安装 MariaDB;须下载 mysql80-community-release-el8.rpm、启用 mysql80-community、禁用 mysql57-community,再 dnf install mysql-community-server 并初始化。

mysql 在 Linux 环境中通过 yum 方式安装详细步骤

MySQL 在 Linux(如 CentOS/RHEL 8+ 或 AlmaLinux/Rocky Linux)上已不再默认提供 mysql-community-server 的 yum 包,官方推荐使用 dnf + RPM Repository 方式安装;直接 yum install mysql 通常装的是 MariaDB,不是 Oracle 官方 MySQL。

确认 系统版本 和包管理器类型

先运行 cat /etc/redhat-releaserpm -q centos-linux-release 查清发行版。RHEL 8+、CentOS 8+、AlmaLinux 8+、Rocky Linux 8+ 默认用 dnfyum 是其符号链接,但部分旧脚本仍写 yum——实际执行的已是 dnf。不要假设 yum 还能像 CentOS 7 那样直接装 MySQL 官方包。

添加 MySQL 官方 YUM Repository

Oracle 不再把 MySQL Server 放进基础仓库,必须手动导入官方 repo:

  • 下载 repo RPM:sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm(注意 el8 要匹配你的系统,如 el9 对应 RHEL 9)
  • 启用 MySQL 8.0 系列(禁用 5.7,避免冲突):sudo dnf config-manager --disable mysql57-community && sudo dnf config-manager --enable mysql80-community
  • 验证是否生效:dnf repolist | grep mysql 应看到 mysql80-community

安装 MySQL Server 并初始化

执行安装命令后,MySQL 不会自动生成 root 密码,首次启动会触发初始化流程:

sudo dnf install mysql-community-server sudo systemctl start mysqld sudo systemctl enable mysqld

初始化日志在 /var/log/mysqld.log,用以下命令提取临时密码:

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

拿到密码后立即登录并改密(MySQL 8.0 强制要求强密码策略):

mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123!';
  • 若提示 ERROR 1820 (HY000): You must reset your password,说明密码不符合策略,需包含大小写字母 + 数字 + 特殊字符
  • mysqld 服务默认绑定 127.0.0.1,远程访问需修改 bind-address 并授权用户
  • 防火墙 需放行 3306:sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload

常见错误:yum install mysql 安装了 MariaDB

这是最常踩的坑——因为很多 镜像源 (包括 阿里云 清华源)的 baseos 仓库里,mysql 包名实际指向 mariadb-server。验证方法:

rpm -qi mysql

若输出中 Vendor 显示 MariaDB Corporation Ab,就不是你要的 MySQL。

解决办法只有两个:删掉 MariaDB(sudo dnf remove mariadb-server),再按上文添加官方 repo 安装;或坚持用 MariaDB,但别误以为它是 Oracle MySQL。

真正想用 MySQL 官方版,绕不开手动加 repo 这步——没有“一键 yum install 就完事”的路径。

text=ZqhQzanResources