一、数据库核心认知
1. 数据库在 OpenEuler 中的定位
MySQL 在 OpenEuler 中是系统服务(systemd 管理),作为国产化服务器系统,OpenEuler 对 MySQL 的兼容性极佳,是政企、国产化项目中存储数据的首选方案。
- 核心作用:为国产化应用(如鲲鹏架构的网站、后台系统)提供数据存储 / 管理能力;
- 运行形式:后台守护进程(mysqld),默认监听 3306 端口;
- 包管理方式:优先使用
dnf(OpenEuler 主流),而非yum(兼容但推荐 dnf)。
2. 核心术语
表格
| 术语 | 通俗解释 | OpenEuler 操作指令 | |
|---|---|---|---|
| MySQL 服务 | 数据库运行的核心进程 | systemctl start mysqld(启动) |
|
| 配置文件 | 存储 MySQL 参数的文件 | /etc/my.cnf(主配置文件) |
|
| 数据目录 | 存储数据库文件的路径 | /var/lib/mysql |
|
| 端口 3306 | MySQL 对外服务的入口 | `ss -tulpn | grep 3306`(查看) |
二、 MySQL 安装
bash
运行
# 查看系统架构
uname -m
# 输出x86_64 → 英特尔/AMD架构;输出aarch64 → 鲲鹏架构
步骤 1:配置 MySQL 官方 YUM 源
OpenEuler 默认源中 MySQL 版本可能较旧,推荐添加官方源:
bash
运行
# 1. 下载对应架构的repo文件
# x86_64架构
sudo wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm
# aarch64(鲲鹏)架构
sudo wget https://dev.mysql.com/get/mysql80-community-release-el8-aarch64-3.noarch.rpm
# 2. 安装repo文件
sudo rpm -ivh mysql80-community-release-el8*.noarch.rpm
# 3. 禁用OpenEuler默认MySQL模块(避免冲突)
sudo dnf module disable mysql -y
步骤 2:安装 MySQL 服务器
bash
运行
# 安装MySQL社区版服务器(自动适配架构)
sudo dnf install mysql-community-server -y
# 验证安装(显示版本即成功)
mysql --version
步骤 3:初始化并启动服务
bash
运行
# 1. 启动MySQL服务
sudo systemctl start mysqld
# 2. 设置开机自启(服务器重启后自动运行)
sudo systemctl enable mysqld
# 3. 查看服务状态(显示active(running)即正常)
sudo systemctl status mysqld
# 4. 获取临时root密码(OpenEuler安装后自动生成)
sudo grep 'temporary password' /var/log/mysqld.log
⚠️ 关键:复制日志中显示的临时密码(如7s9K#2j8Lp),后续登录需要!
步骤 4:安全配置(必做)
bash
运行
# 1. 登录MySQL(输入临时密码)
mysql -u root -p
# 2. 重置root密码(OpenEuler要求密码复杂度:大小写+数字+特殊字符)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySQL@123456';
FLUSH PRIVILEGES;
# 3. 执行安全配置向导(清理危险权限)
exit;
sudo mysql_secure_installation
按向导提示操作(新手直接选 Y):
- 移除匿名用户 → Y
- 禁止 root 远程登录(新手先关闭)→ Y
- 删除 test 数据库 → Y
- 刷新权限 → Y
步骤 5:验证安装成功
bash
运行
# 重新登录MySQL(输入新设置的密码)
mysql -u root -p
# 登录成功后显示"mysql>"提示符,执行以下命令验证
SHOW DATABASES; # 显示默认数据库列表即成功
三、避坑指南
1. 安装报错 "依赖缺失"
OpenEuler 可能缺少依赖包,执行以下命令补全:
bash
运行
# 安装基础依赖
sudo dnf install libaio-devel numactl-devel -y
# 重新安装MySQL
sudo dnf reinstall mysql-community-server -y
2. 鲲鹏架构(aarch64)安装失败
若官方源适配问题,改用 OpenEuler 自带源安装:
bash
运行
# 卸载之前的repo文件
sudo rpm -e mysql80-community-release
# 用系统源安装
sudo dnf install mysql-server -y
3. 防火墙 / SELinux 拦截端口
OpenEuler 默认开启防火墙和 SELinux,需放行 3306 端口:
bash
运行
# 1. 放行3306端口(永久生效)
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
# 2. 临时关闭SELinux(新手推荐,生产环境需精细配置)
sudo setenforce 0
# 永久关闭SELinux(修改配置文件)
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
4. 忘记 root 密码(OpenEuler 通用解法)
bash
运行
# 1. 停止MySQL服务
sudo systemctl stop mysqld
# 2. 跳过权限验证启动
sudo mysqld_safe --skip-grant-tables --skip-networking &
# 3. 免密登录
mysql -u root
# 4. 重置密码
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码(如MySQL@67890)';
FLUSH PRIVILEGES;
exit;
# 5. 重启服务
sudo systemctl restart mysqld
5. 中文乱码(适配 OpenEuler)
修改 MySQL 主配置文件,永久解决乱码:
bash
运行
# 编辑配置文件
sudo vi /etc/my.cnf
在文件中添加以下内容([mysqld] 和 [client] 段都加):
ini
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
保存后重启服务:
bash
运行
sudo systemctl restart mysqld
# 验证字符集(登录MySQL执行)
mysql -u root -p
SHOW VARIABLES LIKE 'character_set_%';
# 所有项显示utf8mb4即成功
四、入门实操:创建第一个数据库
登录 MySQL 后执行以下 SQL 语句,验证功能正常:
sql
# 1. 创建数据库(指定utf8mb4,适配中文)
CREATE DATABASE oe_test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 2. 切换到该数据库
USE oe_test_db;
# 3. 创建测试表(用户表)
CREATE TABLE user_info (
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增
username VARCHAR(30) NOT NULL, -- 用户名非空
age TINYINT, -- 年龄
create_time DATETIME DEFAULT NOW() -- 创建时间默认当前
);
# 4. 插入测试数据
INSERT INTO user_info (username, age) VALUES ('张三', 25), ('李四', 30);
# 5. 查询数据(验证成功)
SELECT * FROM user_info;
执行后能看到插入的两条用户数据,说明数据库功能正常。
总结
- OpenEuler 安装 MySQL 优先用
dnf包管理器,需先配置官方源(区分 x86_64/aarch64 架构),核心步骤是「配置源→安装→启动服务→重置临时密码→安全配置」; - OpenEuler 专属问题:鲲鹏架构依赖适配、防火墙 / SELinux 拦截、中文乱码,均有针对性解决命令;
- 安装后务必验证服务状态和字符集,通过创建测试数据库 / 表确认功能正常。