mysql在Linux最小化安装系统中的部署流程

来源:这里教程网 时间:2026-02-28 20:44:28 作者:

确认系统是否已预装 MariaDB 并彻底卸载

很多 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
残留

使用官方 Yum Repo 安装 MySQL 8.0(推荐方式)

直接下载 RPM 包手动安装易漏依赖、难升级;用 MySQL 官方 repo 可自动解决

libtirpc
openssl11
等最小化系统缺失的依赖,且后续
dnf update
能同步更新。

下载 repo 配置:
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el$(rpm -E %rhel)-$(rpm -E %rhel).noarch.rpm
启用 8.0 社区版(禁用 5.7):
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

初始化并启动 mysqld,跳过首次密码强度校验

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 <your-server-ip> -u appuser -p</your-server-ip>
(从另一台机器执行)

MySQL 在最小化系统中最容易卡在 MariaDB 残留和服务启动阶段,尤其是

/var/lib/mysql
目录权限不对(应属
mysql:mysql
)或 SELinux 强制限制(可临时
setenforce 0
排查,生产环境需配策略)。别跳过初始化日志里的临时密码——它只出现一次。

相关推荐