mysql安装包rpm与tar.gz方式的区别与选择

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

rpm安装:省事但受限于系统和路径

rpm安装本质是“开箱即用”的二进制部署,适合CentOS/RHEL/Fedora这类Red Hat系系统。它由包管理器自动处理依赖、注册服务、创建用户、写入默认路径,安装后直接执行

systemctl start mysqld
就能跑起来。

安装命令极简:
rpm -ivh mysql-community-server-8.0.33-1.el7.x86_64.rpm
卸载干净:
rpm -e mysql-community-server
会连带删掉
/var/lib/mysql
/etc/my.cnf
等所有注册文件
但路径被硬编码死:二进制在
/usr/sbin/mysqld
,数据目录强制为
/var/lib/mysql
,无法改;一台机器只能装一个实例(除非手动改配置+端口+datadir,但 systemd 服务脚本不认)
容易踩坑:若系统已预装
mariadb-libs
,rpm 会因冲突失败,必须先
yum remove mariadb-libs --nodeps

tar.gz安装:自由但得自己扛全部责任

tar.gz(实际多为

mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
这类二进制分发包)本质是“解压即用”,不走包管理器,所有路径、用户、服务、权限都得你手动配。

优势明显:可任意指定安装路径(如
/opt/mysql-8.0.33
)、数据路径(
/data/mysql-prod
)、端口、socket 文件位置;同一台机器轻松并行运行多个 MySQL 实例
启动方式不同:没有
systemctl
服务单元,得靠
bin/mysqld_safe --defaults-file=/etc/my.cnf &
或自己写 systemd unit 文件
初始化必须手动:
bin/mysqld --initialize --user=mysql --datadir=/data/mysql-prod --basedir=/opt/mysql-8.0.33
否则启动报错
Can't find error-message file
或空密码无法登录
常见疏漏:忘记
chown -R mysql:mysql /data/mysql-prod
,或漏装
libaio
(CentOS 7+ 必装,否则
mysqld
直接段错误退出)

别混淆:tar.gz ≠ 源码编译,rpm ≠ 一定最安全

很多人误以为 tar.gz 是源码包——其实官网下载的

*-linux-glibc*.tar.*
全是预编译好的二进制,和 rpm 一样不编译,只是没打包进 rpm 数据库。真正源码编译(
.tar.gz
后缀但内容含
configure
CMakeLists.txt
)需装
cmake
gcc
ncurses-devel
等十几项依赖,耗时长,仅适合定制引擎或调试内核。

rpm 宣称“自动处理依赖”,但只管 rpm 仓库里的包;若你系统用了第三方 repo(如 percona、remi),可能反而因版本冲突卡住 tar.gz 虽要手动,但所有动作透明:你能看清
my.cnf
放哪、日志写哪、pid 文件路径,故障排查时少一层黑盒
安全更新节奏不同:rpm 可用
yum update mysql-community-server
一键升级;tar.gz 升级得停库、替换二进制、重跑
mysql_upgrade
(5.7+ 已弃用,但兼容性检查仍需手动做)

怎么选?看场景,不是看教程推荐

生产环境上线前,先问自己三个问题:

是否必须多实例共存?→ 选
tar.gz
(例如开发/测试/预发共用一台物理机)
是否由运维统一纳管(Ansible/Puppet)且要求标准化?→ 选
rpm
(服务名、日志路径、启动方式全一致)
是否在非 Red Hat 系发行版(如 Ubuntu/Debian)?→
rpm
不能用,只能选
tar.gz
或官方
.deb

最后提醒一句:无论哪种方式,

my.cnf
中的
lower_case_table_names=1
character_set_server=utf8mb4
这两项,装完立刻配,别等业务表建了一堆再改——改不了,只能 dump/reload。

相关推荐