必须清理旧GPG密钥并导入MySQL官方最新密钥(如https://repo.mysql.com/RPM-GPG-KEY-mysql-2022),再执行yum install mysql-community-server;若测试环境可临时加--nogpgcheck绕过,但生产环境严禁关闭签名校验。

直接上结论:用包管理器安装最稳,但必须处理 GPG 密钥过期问题;手动编译或解压二进制包虽可控,但初始化命令容易写错路径和配置文件位置。
用 yum/dnf 安装 MySQL 8.4 时遇到 GPG key expiration 错误
这是当前(2026 年中)最常见的阻塞点,尤其在 CentOS/RHEL/Alibaba Cloud Linux 系统上。官方 RPM 包的签名密钥已过期,yum install mysql-community-server 会直接失败。
- 先清理旧密钥:
rpm -e gpg-pubkey-* - 再导入新密钥(以 MySQL 8.4 为例):
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 - 如果仍报错,跳过检查(仅限测试环境):
yum install -y mysql-community-server --nogpgcheck - 注意:
mysql-community-server是服务端包,客户端是mysql-community-client,别装反
mysqld --initialize-insecure 启动失败:找不到 my.cnf 或数据目录权限不对
手动部署二进制版(如 /mysql/install/mysql-8.0.22/bin/mysqld)时,这个命令常卡住,根本原因不是密码逻辑,而是路径和权限。
-
--defaults-file=/etc/my.cnf必须存在且可读;若没这个文件,先用mysql --help --verbose | grep "Default options"查默认加载路径 - 确保
/mysql/install/data目录由mysql用户拥有:chown -R mysql:mysql /mysql/install/data - 不要省略
--user=mysql参数,否则初始化可能用 root 写入,后续启动失败 - 日志默认输出到控制台,加
> /mysql/install/log/error.log 2>&1方便排查
初始化后无法登录:临时密码在哪?mysqld.log 里没有 temporary password
只在 --initialize(非 --initialize-insecure)模式下生成临时密码。如果你用了 --initialize-insecure,那就真没密码,直接 mysql -u root -h 127.0.0.1 -P 3306 就能进。
- 查日志位置:
mysqld --help --verbose | grep "log-error",常见路径是/var/log/mysqld.log或/mysql/install/log/error.log - 如果日志为空,说明 mysqld 没真正启动成功——先确认
systemctl status mysqld或ps aux | grep mysqld - 云服务器安全组必须放行 3306 端口,但本地登录不走网络,所以连不上 ≠ 端口没开,先排除本地连接问题
最易被忽略的是磁盘挂载和 SELinux。华为云 ECS 初始化数据盘后没挂载到 /mysql,或者 Alibaba Cloud Linux 默认开启 SELinux,会导致 mysqld 拒绝访问 data 目录——错误信息里不会明说 SELinux,只会报 Can't create/write to file 或 Permission denied。



















