rpm安装mysql后服务无法启动的根源是未初始化数据目录且root密码未生成;需确认安装mysql-community-server包、清空/var/lib/mysql/、用mysqld --initialize --user=mysql初始化,并从/var/log/mysqld.log获取临时密码。

直接用 rpm -ivh 安装 MySQL RPM 包后,mysqld 通常不会自动初始化数据目录,也不会生成默认 root 密码——这是最常导致“无法登录”或“服务启动失败”的根源。
确认 RPM 包是否含 server 组件
MySQL 官方 RPM 分发包拆分较细,mysql-community-server 才包含 mysqld 二进制和初始化逻辑,仅装 mysql-community-client 或 mysql-community-common 是无法启动服务的。
- 运行
rpm -qpl mysql80-community-release-el8-*.noarch.rpm | grep server确认该 repo 包是否启用 server 仓库 - 实际安装时必须显式指定:
yum install mysql-community-server(RHEL/CentOS 8+)或dnf install mysql-community-server - 若误装了
mariadb-server,会冲突且mysqld --initialize会报错 “unknown option '--datadir'”
初始化前必须清空或指定 datadir
mysqld --initialize 要求目标 --datadir 目录为空且属主为 mysql:mysql,否则直接失败并退出,日志里只写 “Aborting” 无具体原因。
- 默认 datadir 是
/var/lib/mysql;若该目录已存在(比如之前装过 MariaDB),先执行:rm -rf /var/lib/mysql/*(勿删目录本身) - 修改 datadir 前,需同步更新
/etc/my.cnf中的datadir和socket路径,并确保 SELinux 允许新路径:semanage fcontext -a -t mysqld_db_t "/new/path(/.*)?"+restorecon -Rv /new/path - 初始化命令必须带
--user=mysql:mysqld --initialize --user=mysql --datadir=/var/lib/mysql
启动服务并获取临时 root 密码
初始化成功后,mysqld 不会自动启动,且 root 密码仅在首次初始化日志中输出一次,丢失即需重置。
- 启动服务:
systemctl start mysqld;检查状态:systemctl status mysqld(注意看 Active: active (running)) - 临时密码在错误日志里:
grep 'temporary password' /var/log/mysqld.log—— 输出形如A1b2C3d4E5f6,不是明文 “password” - 首次登录必须用该密码:
mysql -u root -p,登录后立即执行ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass123!'; - 若跳过密码修改,后续所有 DML/DDL 操作都会报错:
ERROR 1820 (HY000): You must reset your password before executing this statement
真正容易被忽略的是 SELinux 上下文和初始化日志位置:CentOS/RHEL 默认开启 SELinux,但错误日志不提示权限拒绝,只显示 “Can't start server”,而临时密码只写进 /var/log/mysqld.log,不是 journal 或 stdout。











