不能直接用zypper install mysql-community-server,因为SUSE默认仓库只提供MariaDB、不含MySQL官方包,且mariadb-libs与mysql-community-libs存在文件路径和符号版本硬冲突;必须先卸载MariaDB相关包、清理残留配置、添加MySQL官方仓库并替换为国内镜像源,再安装并确保mysql-community-icu-data-files等依赖完整。

能直接用 zypper 装,但必须先换源、关冲突仓库、清理旧包——否则 90% 概率卡在依赖或启动失败。
为什么不能直接 zypper install mysql-community-server
因为 SUSE 默认仓库里没有 MySQL 官方包;zypper 会默认从 openSUSE 或 SLES 自带仓库找包,而这些仓库只提供 MariaDB(和 MySQL 不兼容)。你看到的 mysql-community-server 是 MySQL 官方 RPM 包,必须手动添加其 repo 才能被 zypper 识别。
- 不加官方 repo 就执行安装,
zypper会报No provider of 'mysql-community-server' found - 如果系统已装
mariadb-libs(SLES/openSUSE 默认带),zypper会拒绝安装mysql-community-libs,提示file /usr/lib64/libmysqlclient.so.21 from install of mysql-community-libs conflicts with file from package mariadb-libs - 即使强行绕过(如用
--force),后续systemctl start mysql也会因缺失 ICU 数据或 Perl 解释器直接退出
必须执行的三步前置清理
这三步不做,后面所有操作都白忙——不是安装失败,就是服务起不来、日志空、连不上。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 卸载所有 MariaDB 相关包:
sudo zypper remove -y mariadb-libs mariadb-client mariadb。不要只停服务,必须remove;--nodeps一般不用,zypper会自动处理依赖 - 删干净残留配置和数据:
sudo rm -rf /var/lib/mysql /etc/my.cnf /var/log/mysql* /var/log/mysqld.log - 确认无旧 MySQL RPM:
rpm -qa | grep -i 'mysql\|mariadb',输出应为空;若有,用sudo rpm -e --nodeps <pkgname>强制清除
添加 MySQL 8.0 官方仓库并启用
注意:SUSE 15 和 SLES 12/15 的 repo 包名不同,别下错;且必须替换为国内镜像源,否则 zypper refresh 极慢甚至超时。
- 下载对应 repo 包(以 openSUSE 15 为例):
wget https://mirrors.nju.edu.cn/mysql/Downloads/MySQL-8.0/mysql80-community-release-sl15-1.noarch.rpm - 导入 GPG 密钥:
sudo rpm --import https://mirrors.nju.edu.cn/mysql/RPM-GPG-KEY-mysql-2023 - 安装 repo 包:
sudo rpm -Uvh mysql80-community-release-sl15-1.noarch.rpm - 替换源地址(关键!):
sudo sed -i.bak 's|http://repo.mysql.com|https://mirrors.nju.edu.cn/mysql|g' /etc/zypp/repos.d/mysql-community*.repo - 刷新仓库:
sudo zypper refresh;然后确认仓库已启用:zypper repos | grep mysql应显示enabled
用 zypper 安装并初始化服务
这一步最省事——zypper 会自动拉取全部依赖(perl、libaio、numactl 等),不用你一个个装;但要注意它默认装的是最新 GA 版本(如 8.4),若需固定 8.0,得先禁用其他版本。
- 禁用非 8.0 的 MySQL 仓库(可选,但推荐):
sudo zypper modifyrepo --disable mysql57-community mysql84-community - 安装服务端:
sudo zypper install -y mysql-community-server - 首次启动会自动执行
mysqld --initialize,初始密码写在/var/log/mysql/mysqld.log(不是/var/log/mysqld.log)里,用sudo grep 'temporary password' /var/log/mysql/mysqld.log查 - 启动服务:
sudo systemctl enable --now mysql;检查状态:systemctl status mysql,应为active (running)
真正容易被忽略的是:SUSE 下 mysql 服务名是 mysql,不是 mysqld;systemctl start mysqld 会失败。另外,mysql-community-icu-data-files 包虽被 zypper 自动拉取,但如果网络中断过,它可能没装上——此时 systemctl status mysql 日志里会出现 ICU data files not found,需手动补装:sudo zypper install -y mysql-community-icu-data-files。

















