mysql rpm包不能单独安装,需用dnf/yum解决依赖;安装后须初始化数据目录、启动服务并运行mysql_secure_installation;若与mariadb冲突需卸载后者;路径和配置文件位置固定不可随意更改。

直接用 rpm -ivh 安装 MySQL RPM 包会失败
MySQL 官方提供的 mysql-community-server RPM 包**不能单独安装**,它依赖 mysql-community-common、mysql-community-libs、mysql-community-client 等多个子包。直接 rpm -ivh mysql-community-server-*.rpm 会报类似 error: Failed dependencies 的错误,提示缺 mysql-community-common 或 libtinfo.so.5 等。
正确做法是:用 yum 或 dnf(推荐)一次性解决依赖:
- 先下载所有 RPM 包(或只下载
mysql80-community-release源包) - 运行
sudo dnf localinstall *.rpm(CentOS 8+/RHEL 8+)或sudo yum localinstall *.rpm(CentOS 7) - 更稳妥的是先配置官方 YUM 源:
sudo rpm -Uvh mysql80-community-release-elX-*.noarch.rpm,再执行sudo dnf install mysql-server
安装后必须初始化并启动 mysqld 服务
RPM 安装完不会自动初始化数据目录,也不会启动服务。直接运行 mysql 会报 Can't connect to local MySQL server through socket。
必须按顺序执行:
-
sudo mysqld --initialize --user=mysql—— 生成/var/lib/mysql和临时 root 密码(在/var/log/mysqld.log中 grepA temporary password) -
sudo systemctl enable mysqld—— 设置开机自启 -
sudo systemctl start mysqld—— 启动服务 -
sudo mysql_secure_installation—— 强制修改初始密码、删匿名用户、禁远程 root 等(否则无法用 root 登录)
常见报错:Failed to start mysqld.service: Unit not found
这通常是因为你装的是社区版但系统已预装了 MariaDB(如 CentOS 7 默认带 mariadb-server),两者冲突,mysqld 服务名被占或 systemd 未识别。
检查并清理:
- 运行
rpm -qa | grep -i mysql和rpm -qa | grep mariadb,确认是否共存 - 若已装 MariaDB,先卸载:
sudo yum remove mariadb-libs(注意:某些系统会警告systemd依赖,此时加--force --nodeps要谨慎) - 重装 MySQL 前清空残留:
sudo rm -rf /var/lib/mysql /etc/my.cnf,再重新dnf install mysql-server - 确认服务文件存在:
ls /usr/lib/systemd/system/mysqld.service,没有则说明安装不完整
安装路径和配置文件位置固定,别手动改错地方
RPM 包安装后路径是标准化的,硬编码进二进制和 service 文件里,乱改会导致启动失败:
- 数据目录默认为
/var/lib/mysql,由mysqld的datadir配置项控制 - 主配置文件是
/etc/my.cnf,但 RPM 实际优先读/etc/my.cnf.d/mysql-server.cnf - socket 文件固定为
/var/lib/mysql/mysql.sock,客户端连接时若报Can't connect via socket,先检查该路径是否存在且权限为mysql:mysql - 日志默认写入
/var/log/mysqld.log,不是/var/log/mysql/error.log
改配置前务必确认当前生效的是哪个文件:mysql --help | grep "Default options",再用 mysqld --print-defaults 验证。










