rpm安装适合Red Hat系系统,自动处理依赖和配置但路径固定;tar.gz安装自由灵活可多实例并行,但需手动配置所有细节。
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(实际多为 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 是源码包——其实官网下载的 *-linux-glibc*.tar.* 全是预编译好的二进制,和 rpm 一样不编译,只是没打包进 rpm 数据库。真正源码编译(.tar.gz 后缀但内容含 configure 或 CMakeLists.txt)需装 cmake、gcc、ncurses-devel 等十几项依赖,耗时长,仅适合定制引擎或调试内核。
my.cnf 放哪、日志写哪、pid 文件路径,故障排查时少一层黑盒yum update mysql-community-server 一键升级;tar.gz 升级得停库、替换二进制、重跑 mysql_upgrade(5.7+ 已弃用,但兼容性检查仍需手动做)生产环境上线前,先问自己三个问题:
tar.gz(例如开发/测试/预发共用一台物理机)rpm(服务名、日志路径、启动方式全一致)rpm 不能用,只能选 tar.gz 或官方 .deb 包最后提醒一句:无论哪种方式,my.cnf 中的 lower_case_table_names=1 和 character_set_server=utf8mb4 这两项,装完立刻配,别等业务表建了一堆再改——改不了,只能 dump/reload。