数据库初识与安装

一、数据库核心认知

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;

执行后能看到插入的两条用户数据,说明数据库功能正常。

总结

  1. OpenEuler 安装 MySQL 优先用dnf包管理器,需先配置官方源(区分 x86_64/aarch64 架构),核心步骤是「配置源→安装→启动服务→重置临时密码→安全配置」;
  2. OpenEuler 专属问题:鲲鹏架构依赖适配、防火墙 / SELinux 拦截、中文乱码,均有针对性解决命令;
  3. 安装后务必验证服务状态和字符集,通过创建测试数据库 / 表确认功能正常。
相关推荐
m0_738098021 小时前
使用Python操作文件和目录(os, pathlib, shutil)
jvm·数据库·python
AI成长日志2 小时前
【实用工具教程】数据库基础操作实战:SQLite/MySQL连接、CRUD操作与查询优化
数据库·mysql·sqlite
l1t2 小时前
DeepSeek总结的 DuckDB 1.5 功能亮点
数据库·sql·duckdb
Bdygsl2 小时前
MySQL(4)—— 表设计
数据库·mysql
2301_819414302 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
未来龙皇小蓝2 小时前
【MySQL-索引调优】09:Order By相关概念
数据库·mysql·性能优化
未来龙皇小蓝2 小时前
【MySQL-索引调优】10:常见的分页优化处理
数据库·mysql·性能优化
God__is__a__girl2 小时前
Oracle驱动版本引发ORA-01461批量插入异常排查与解决
数据库·oracle
少年攻城狮2 小时前
Oracle系列---【两个环境,表结构一致,数据量一致,索引也一致,为什么同样的sql执行时间却不一致?】
数据库·sql·oracle