Fedora各版本需严格匹配mysql80-community-release-fcXX包,fcXX必须与系统主版本号一致(如Fedora 39对应fc39);官方仅提供至fc39,fc40暂未发布,须降级使用fc39源或改用二进制包;安装前需手动添加MySQL社区YUM源,禁用默认MariaDB;启动失败常见原因包括SELinux拦截、/etc/my.cnf冲突、/var/lib/mysql权限错误;首次登录使用日志中临时密码,安全初始化前需调低validate_password策略或设合规密码。

确认系统版本和仓库兼容性
Fedora各版本对应的MySQL官方仓库包名不同,mysql80-community-release-fcXX中的fcXX必须与你的Fedora主版本号严格匹配,否则dnf install mysql-community-server会找不到包或装错源。运行cat /etc/fedora-release或rpm -E %fedora确认当前版本(如38、39、40)。官方仅提供到fc39的RPM(截至2026年10月),fc40暂未发布,此时需降级使用fc39源或改用二进制包。
添加MySQL官方YUM仓库并启用
直接安装mysql-community-server会失败,因为Fedora默认源不含Oracle官方MySQL——它只含MariaDB别名。必须手动添加MySQL社区源:
- 下载对应版本的release包,例如Fedora 39:
wget https://dev.mysql.com/get/mysql80-community-release-fc39-1.noarch.rpm - 安装该RPM:
sudo rpm -ivh mysql80-community-release-fc39-1.noarch.rpm - 验证是否启用:
sudo dnf repolist enabled | grep mysql80,应输出类似mysql80-community的一行 - 若看到
mysql57-community也被启用,需禁用它:sudo dnf config-manager --disable mysql57-community
安装服务端并处理首次启动失败
sudo dnf install -y mysql-community-server成功后,sudo systemctl start mysqld常报Failed to start mysqld.service: Unit not found或Permission denied,原因多为:
- SELinux拦截(尤其Fedora默认开启):
sudo setenforce 0临时放行;若需永久关闭,改/etc/selinux/config中SELINUX=disabled后重启 -
/etc/my.cnf存在冲突配置(如旧版skip-grant-tables或错误datadir路径),建议先sudo mv /etc/my.cnf /etc/my.cnf.bak再启动 - 数据目录权限不对:
sudo chown -R mysql:mysql /var/lib/mysql(默认路径)
启动成功后,临时密码在/var/log/mysqld.log里:sudo grep 'temporary password' /var/log/mysqld.log
安全初始化与密码策略绕过
MySQL 8.0默认启用validate_password插件,要求密码含大小写字母+数字+特殊字符,导致mysql_secure_installation卡在“重设root密码”环节。正确做法是:
- 先用临时密码登录:
mysql -u root -p - 执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass!123'; - 若仍被拒绝,临时禁用插件:
SET GLOBAL validate_password.policy = LOW;,再改密 - 运行
sudo mysql_secure_installation完成其余加固(删除匿名用户、禁止远程root、移除test库等)
注意:mysql_secure_installation不接受空密码,也不接受纯数字密码,且不会自动帮你关掉validate_password——这个插件一旦启用,就必须按规则设密或显式调低策略。











