openeuler上安装mysql必须使用官方mysql80-community源或离线rpm包,因默认源中mysql-server实为mariadb别名;需先卸载mariadb、添加mysql官方yum源(如mysql80-community-release-el8-3)、安装mysql-community-server,并注意selinux、/etc/my.cnf及数据目录权限配置。

mysqld 服务在 openEuler 上无法直接用 dnf install mysql-server 一键装好——因为 openEuler 默认源里虽有 mysql 包,但它是 MariaDB 的别名,不是 Oracle 官方 MySQL 8.0。必须明确指向官方社区版,否则装错、启不动、连不上是常态。
确认系统版本并选择安装方式
openEuler 22.03/24.03 均兼容 RHEL8/CentOS8 的 RPM 包,优先用官方 YUM 源(推荐);若服务器无外网或需离线部署,则用二进制包或 RPM Bundle(注意依赖顺序)。不要混用:dnf install mysql 和 rpm -ivh mysql-community-*.rpm 同时存在会冲突。
- 查系统版本:
cat /etc/os-release | grep VERSION_ID,输出VERSION_ID="22.03"或"24.03" - 有外网:走 YUM 源(最稳,自动处理依赖)
- 无外网:下载
mysql-8.0.x-1.el8.x86_64.rpm-bundle.tar,解压后按common → client-plugins → libs → client → icu-data-files → server顺序rpm -ivh
添加 MySQL 官方 YUM 源(有网场景)
openEuler 不自带 MySQL 8.0 的 repo,必须手动加。用 el8 版本的源文件,它对 openEuler 22.03/24.03 兼容性最好。
- 执行:
cd /etc/yum.repos.d/ && wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm - 安装源包:
rpm -ivh mysql80-community-release-el8-3.noarch.rpm - 验证是否生效:
dnf repolist enabled | grep mysql,应看到mysql80-community - ⚠️ 注意:
dnf install mysql-community-server才是 MySQL 8.0 服务端,mysql-server是 MariaDB
启动失败常见原因与修复
systemctl start mysqld 报 failed to start 或 Permission denied,大概率是 SELinux 或配置路径问题。
- SELinux 拦截(尤其 openEuler 22.03):
setenforce 0临时关闭,或永久改/etc/selinux/config中SELINUX=disabled;若必须开启 SELinux,需加载专用策略模块(如mysql_euler.pp) -
/etc/my.cnf冲突:openEuler 自带的/etc/my.cnf可能含不兼容 MySQL 8.0 的配置(如旧版[mysqld]下写了skip-grant-tables或错误datadir),建议先备份再清空,让 MySQL 自动生成默认配置 - 数据目录权限不对:确保
/var/lib/mysql(默认)归mysql:mysql所有,且755权限;若自定义datadir,必须同步改属主和 SELinux 上下文(chcon -t mysqld_db_t /path/to/datadir)
初始化密码与首次登录
MySQL 8.0 安装后会生成一次性临时密码,不改就进不去。且首次登录后必须立刻改密,否则后续任何 SQL 都报错。
- 查临时密码:
grep 'temporary password' /var/log/mysqld.log,密码是:后那一串(注意空格) - 登录:
mysql -u root -p,粘贴临时密码 - 改密(必须用新语法):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123!'; - 若提示
caching_sha2_password认证失败(比如 Navicat 连不上),加一句:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPass123!';
mysql80-community,不能是系统默认的 mysql;服务启动前必须确认 SELinux 和 /etc/my.cnf 不拖后腿**。其他步骤都是标准流程,错一个环节,mysqld 就起不来。











