zypper 是 opensuse 上最稳妥的 mysql 8.0 安装方式,需先配置官方仓库、导入 gpg 密钥、替换国内镜像源、手动刷新元数据,再安装 server/client/client-plugins/icu-data-files/common/libs 全组件包,启动后须用初始密码登录并切换认证插件。

zypper 是 OpenSUSE 上最稳妥、最省心的 MySQL 8.0 安装方式,前提是用对源、配好密钥、不跳过刷新步骤。直接上 RPM 包手动安装容易因依赖顺序或缺失 mysql-community-client-plugins 等包而失败,而 zypper 能自动解决依赖并校验签名。
必须先配置 MySQL 官方仓库(不是默认系统源)
OpenSUSE 自带源里没有 MySQL 社区版,必须添加 Oracle 官方 repo。关键点在于:版本号后缀要和你的系统完全匹配(比如 sl15 对应 openSUSE Leap 15.x),否则 zypper search 找不到包。
- 下载对应 repo 包:
wget https://repo.mysql.com/mysql80-community-release-sl15-1.noarch.rpm - 导入 GPG 密钥(必须做,否则
zypper install会报 signature verification failed):rpm --import https://mirrors.nju.edu.cn/mysql/RPM-GPG-KEY-mysql-2023 - 安装 repo 包:
rpm -Uvh mysql80-community-release-sl15-1.noarch.rpm - 替换镜像源为国内地址(避免超时):
sed -i.bak 's|http://repo.mysql.com|https://mirrors.nju.edu.cn/mysql|g' /etc/zypp/repos.d/mysql-community*.repo - 强制刷新元数据:
zypper refresh(别信autorefresh,手动跑一次更稳)
安装时指定完整包名,避免漏装核心组件
mysql-community-server 单独安装会缺客户端插件和 ICU 数据文件,导致后续 mysql 命令无法连接或报 Plugin caching_sha2_password could not be loaded 错误。
- 正确安装命令:
zypper install -y mysql-community-{server,client,client-plugins,icu-data-files,common,libs}-8.0.43-1.sl15.x86_64.rpm - 如果提示 no package provides,说明版本号(如
8.0.43)和系统架构(sl15)不匹配,回到上一步检查 repo 包是否下对了 - 不建议用通配符(如
*.rpm)——zypper不支持 glob 展开,会报错
启动前必须处理初始密码和验证规则
MySQL 8.0 启动后自动生成临时 root 密码,但默认启用强密码策略,且认证插件是 caching_sha2_password。很多老工具(如旧版 Navicat、某些 JDBC 驱动)连不上。
- 查看初始密码:
grep 'temporary password' /var/log/mysql/mysqld.log(注意路径是/var/log/mysql/,不是/var/log/mysqld.log) - 首次登录后立即改密码并切回兼容插件:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPass123!'; - 如果卡在密码策略报错,先执行:
SET GLOBAL validate_password.policy=LOW;,再设密码 - 别碰
skip-grant-tables——它会让ALTER USER失效,反而更难收场
服务启动失败常见原因和快速定位法
systemctl start mysqld 报 failed 时,90% 是配置或权限问题,不是安装本身出错。
- 先看日志:
journalctl -u mysqld -n 50 -f,重点找Can't open the mysql.plugin table或Table 'mysql.plugin' doesn't exist——说明mysql-community-server没装全,重装 - 检查
/var/lib/mysql是否为空目录;若非空且含ibdata1等文件,可能是之前装过 MariaDB 残留,需清空并卸载mariadb-libs -
mysqld --initialize不要手动运行 ——zypper安装的包已内置初始化逻辑,重复执行会破坏数据目录权限 - 确认 SELinux 在 OpenSUSE 上默认是 disabled,不用额外关;但防火墙要放行 3306:
firewall-cmd --add-port=3306/tcp --permanent && firewall-cmd --reload
sl15 后缀是否还适用。











