必须先彻底卸载系统预装的MariaDB,再通过官方Yum Repo安装MySQL 8.0;需禁用密码验证插件后初始化、记录临时密码、授权远程用户并开放防火墙3306端口。

很多 Linux 最小化安装(如 CentOS Stream 8/9、Rocky 9、AlmaLinux 9)默认自带 mariadb-server,它会占用 3306 端口、注册同名 systemd 服务,并与 MySQL 二进制冲突。不先清理会导致 mysqld 启动失败或服务无法识别。
rpm -qa | grep -i mariadb 查看是否安装sudo dnf remove mariadb-* --allowerasing(RHEL/CentOS 8+)或 sudo yum remove mariadb*(旧版),并加 --purge 参数(如支持)清除配置和数据目录sudo ls /var/lib/mysql 和 sudo ls /etc/my.cnf*,非空则需 sudo rm -rf /var/lib/mysql /etc/my.cnf*(确保无业务数据)sudo systemctl list-unit-files | grep mysql,确认无 mariadb.service 或 mysql.service 残留直接下载 RPM 包手动安装易漏依赖、难升级;用 MySQL 官方 repo 可自动解决 libtirpc、openssl11 等最小化系统缺失的依赖,且后续 dnf update 能同步更新。
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el$(rpm -E %rhel)-$(rpm -E %rhel).noarch.rpm
sudo dnf-config-manager --disable mysql57-community && sudo dnf-config-manager --enable mysql80-community
sudo dnf install mysql-community-server mysql-community-client
which、nc,可顺带补上:sudo dnf install which nc
MySQL 8.0 默认启用 validate_password 插件,最小化系统首次初始化时若未预设策略,ALTER USER 会因密码太简单报错 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements。
/etc/my.cnf 的 [mysqld] 段下添加 validate_password=OFF
sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql(输出中会显示临时 root 密码,务必记录)sudo systemctl enable --now mysqld
mysql -u root -p → 输入临时密码 → 执行 ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourPass123!';
my.cnf 中的 validate_password=OFF,再 sudo systemctl restart mysqld
最小化系统默认启用 firewalld 且未放行 3306,即使 bind-address = 0.0.0.0 也连不上;另外 MySQL 8.0 默认只允许本地 socket 连接,需显式授权用户。
sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload
CREATE USER 'appuser'@'%' IDENTIFIED BY 'SecurePass456!'; GRANT SELECT,INSERT,UPDATE ON mydb.* TO 'appuser'@'%'; FLUSH PRIVILEGES;
bind-address 已设为 0.0.0.0 或注释掉(默认监听所有接口),且 skip-networking 未启用mysql -h -u appuser -p (从另一台机器执行)MySQL 在最小化系统中最容易卡在 MariaDB 残留和服务启动阶段,尤其是 /var/lib/mysql 目录权限不对(应属 mysql:mysql)或 SELinux 强制限制(可临时 setenforce 0 排查,生产环境需配策略)。别跳过初始化日志里的临时密码——它只出现一次。