直接 yum install mysql 安装的是 mariadb 而非 oracle 官方 mysql,因其是独立分支;需添加 mysql 官方仓库、禁用 mariadb 模块、安装 mysql-community-server 并初始化配置。

为什么直接 yum install mysql 装出来的不是 Oracle 官方 MySQL?
CentOS/RHEL 自带的 yum install mysql 实际安装的是 mariadb —— 一个完全独立的分支,和 MySQL 兼容但不等价。命令名、客户端工具、默认配置路径都可能不同,后续连不上、mysql --version 显示 MariaDB,就是这个原因。
要装 Oracle 官方 MySQL(即 mysql-community-server),必须先换源:
- 下载并安装官方 RPM 包:
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm(注意后缀匹配你的系统:el7 / el8 / el9) - 确认仓库已启用:
yum repolist enabled | grep mysql,应看到mysql80-community或类似条目 - 禁用默认的 mariadb 模块(RHEL8+):
sudo dnf module reset mysql && sudo dnf module enable mysql:8.0
安装时选错 mysql-community-server 还是 mysql-community-client?
只装 mysql-community-client 是不够的——它只有命令行工具 mysql,没有服务端、没 mysqld、无法启动数据库服务。
真正需要部署服务的场景,必须装 mysql-community-server:
-
sudo yum install mysql-community-server(自动拉取依赖,包括 client、common、libs) - 安装后不会自动启动,需手动:
sudo systemctl start mysqld - 首次启动会生成临时密码,日志在
/var/log/mysqld.log,搜索A temporary password
mysqld 启动失败常见报错与定位方法
最常卡在权限、目录缺失或 SELinux 拒绝访问。不要一上来就改配置文件,先看真实错误:
- 运行
sudo systemctl status mysqld,重点看最后一行 “failed with result ‘exit-code’” 后面的提示 - 查完整日志:
sudo journalctl -u mysqld -n 50 --no-pager,找ERROR行 - 典型问题:
Can't create/write to file '/var/run/mysqld/mysqld.pid'→ 手动创建目录并赋权:sudo mkdir -p /var/run/mysqld && sudo chown mysql:mysql /var/run/mysqld - SELinux 拦截(尤其 CentOS):
sudo setsebool -P mysqld_disable_trans 1或临时设为 permissive 模式验证
初始化后必须立刻执行的三件事
临时密码只管一次,且默认策略极严(密码长度、大小写、符号全要),不改根本连不上:
- 用临时密码登录:
mysql -u root -p(密码粘贴即可,不回显) - 立刻改密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPass123!';(MySQL 8.0+ 默认用 caching_sha2_password,某些客户端不兼容) - 删掉测试库(可选但推荐):
DROP DATABASE IF EXISTS test;,并移除匿名用户:DELETE FROM mysql.user WHERE User=''; FLUSH PRIVILEGES;
配置文件 /etc/my.cnf 不建议一上来就大改。默认配置能跑通,复杂调优(如 innodb_buffer_pool_size)得等业务量上来再看监控决定。











