← 返回文章列表

数据库学习笔记(一):在 CentOS Stream 10 上安装 MySQL

本文记录了在 CentOS Stream 10 上从零搭建 MySQL 8.4 LTS 数据库环境的全过程,涵盖系统检查、官方仓库配置、软件安装、服务启动、首次登录与密码修改,并完成基础 SQL 语句验证。通过实践掌握数据库部署、配置文件与数据目录管理,以及常见问题排查方法。后续将循序渐进学习数据库设计、SQL 操作及 C++ 程序连接数据库,结合课程进度稳步推进,夯实数据库应用基础。

一、从数据库学习开始

此前,我的学习主要集中在 C/C++ 基础、数据结构与算法等方面。随着学习深入,我也希望逐步掌握数据库的基本原理与使用方法,了解数据如何存储、查询、修改和管理,并尝试将这些知识应用到实际程序中。

因此,我准备从数据库的基础环境搭建开始,逐步记录自己的学习过程。

考虑到目前学校课程比较多,C++、Linux 和数据库需要同步学习,更新节奏可能不会很快。与其追求进度,不如把每个阶段的基础知识学扎实,完成实际操作后再进行总结。

本系列以数据库知识与实践为主线。Linux 主要作为数据库安装和运行的环境,C++ 则作为后续程序开发与数据库应用的衔接方向。

本文首先完成 MySQL 的安装、启动、登录和基础验证,为后续学习 SQL 语句、数据表设计、数据库查询及程序连接数据库做好准备。

二、安装前的准备

2.1 确认操作系统版本

本文使用 CentOS Stream 10 作为安装环境。

打开终端,执行:

cat /etc/os-release

该命令用于查看当前 Linux 发行版的名称、版本等信息。

确认系统版本非常重要,因为不同发行版的软件包、软件仓库和依赖关系可能存在差异。安装数据库时,应选择与当前环境相匹配的软件包和安装方式。

2.2 检查已有数据库环境

在安装 MySQL 之前,先检查系统中是否已经安装相关软件:

rpm -qa | grep -Ei 'mysql|mariadb'

再查看服务状态:

systemctl status mysqld --no-pager
systemctl status mariadb --no-pager

这里主要检查两类情况:

  • MySQL 是否已经安装或运行。
  • 系统是否已经存在 MariaDB 等相关数据库服务。

MySQL 和 MariaDB 是相关但并不完全相同的数据库项目。某些系统可能已经安装了 MariaDB,因此需要提前确认,避免不同数据库软件包发生冲突。

如果已有数据库正在使用,应先确认数据是否需要保留,并做好备份。不要为了重新安装而直接删除数据目录。

如果是全新的学习环境,且确认不存在需要保留的数据,就可以继续操作。

三、配置 MySQL 官方软件仓库

3.1 为什么使用官方软件仓库?

MySQL 可以通过官方软件仓库安装。使用软件仓库的好处是,系统能够根据依赖关系安装相关组件,并在后续进行软件维护。

MySQL 官方提供适用于 EL10 系列平台的软件包。本文选择 MySQL 8.4 LTS 作为学习版本,以便围绕相对成熟的版本开展数据库基础学习。

需要注意,MySQL 官方仓库可能默认启用更新的 LTS 系列,因此不能仅仅安装仓库配置包后就直接假定安装的是 MySQL 8.4。

官方资料:

  • MySQL 官方 Yum Repository 指南
  • MySQL 官方仓库配置包下载页面

3.2 下载仓库配置包

打开 MySQL 官方下载页面,选择适用于 EL10 平台的仓库配置 RPM 文件。

下载后,进入文件所在目录。例如:

cd ~/Downloads

查看下载的文件:

ls -lh *.rpm

实际下载目录可能不同,应以自己的系统为准。

3.3 安装仓库配置包

将下面的文件名替换为实际下载的 RPM 文件名:

sudo dnf install ./实际下载的仓库配置包.rpm

安装完成后,查看 MySQL 仓库列表:

sudo dnf repolist all | grep mysql

这一步是为了确认仓库配置已经添加到系统中,并查看不同 MySQL 版本系列的启用状态。

3.4 选择 MySQL 8.4 软件系列

如果仓库默认启用的是 MySQL 9.7 LTS,而本次希望安装 MySQL 8.4,则需要按照当前仓库提供的配置项切换版本系列。

在官方仓库支持相应配置管理命令的情况下,可以执行:

sudo dnf config-manager disable mysql-9.7-lts-community
sudo dnf config-manager disable mysql-tools-9.7-lts-community

sudo dnf config-manager enable mysql84-community
sudo dnf config-manager enable mysql-tools-community

这些命令用于关闭默认启用的 9.7 系列仓库,并启用 MySQL 8.4 对应的仓库。

再次检查:

sudo dnf repolist enabled | grep mysql

确认启用的是目标版本对应的仓库后,再继续安装。

如果系统提示 config-manager 命令不可用,应根据当前 DNF 版本和官方文档检查相应的配置管理工具,或者编辑 MySQL 仓库配置文件中的 enabled 项。

这里需要注意:软件仓库配置决定了包管理工具实际获取的 MySQL 版本。安装之前确认这一点,可以减少后续版本不一致带来的问题。

四、安装 MySQL 数据库服务

4.1 执行安装命令

确认仓库配置正确后,执行:

sudo dnf install mysql-community-server

系统会解析并安装 MySQL 服务器及其所需的相关组件。

安装过程中,可以关注软件包名称和安装结果,了解服务器端、客户端及公共组件之间的区别。

对于初学者来说,目前不需要深入研究所有软件包,只要先明确:数据库服务器负责管理和处理数据请求,而客户端用于连接服务器并执行 SQL 语句。

4.2 检查安装结果

安装完成后,执行:

rpm -qa | grep -i mysql

查看已经安装的 MySQL 相关软件包。

再执行:

mysql --version

查看 MySQL 客户端程序的版本信息。

需要注意,这条命令只能说明客户端程序可用,并不能单独证明数据库服务器已经正常启动。接下来还需要检查服务状态。

五、启动 MySQL 并检查服务状态

5.1 启动数据库服务

执行:

sudo systemctl start mysqld

MySQL 安装完成后,服务器需要启动才能接收数据库连接。

这里使用 systemctl 管理服务,但本文关注的重点仍然是数据库的部署与使用。只需要先掌握启动、停止、重启和查看状态这几个必要操作即可。

常用命令如下:

# 启动数据库服务
sudo systemctl start mysqld

# 查看数据库服务状态
sudo systemctl status mysqld --no-pager

# 重启数据库服务
sudo systemctl restart mysqld

# 停止数据库服务
sudo systemctl stop mysqld

5.2 设置开机启动

如果希望系统启动时自动启动 MySQL,可以执行:

sudo systemctl enable mysqld

如果希望立即启动服务并设置开机启动,也可以使用:

sudo systemctl enable --now mysqld

5.3 验证服务是否正常运行

执行:

systemctl is-active mysqld

如果输出:

active

说明服务处于活动状态。

还可以查看:

systemctl is-enabled mysqld

用于检查是否设置了开机启动。

需要区分的是,服务当前处于运行状态,并不等于已经设置开机启动;反过来,设置了开机启动,也不代表当前服务一定运行正常。

如果启动失败,可以执行:

sudo systemctl status mysqld --no-pager -l

必要时查看日志:

sudo journalctl -u mysqld -n 100 --no-pager

先确认错误信息,再处理具体问题,比反复执行启动命令更有效。

六、首次登录 MySQL

6.1 查找初始密码

对于首次初始化时生成临时 root 密码的安装,可以尝试:

sudo grep 'temporary password' /var/log/mysqld.log

如果日志中存在临时密码,应妥善保存,并在首次登录后及时修改。

如果没有找到,不必直接认为安装失败。应进一步检查服务是否正常启动、初始化是否完成,以及当前版本使用的日志配置。

6.2 使用 root 账户登录

执行:

mysql -u root -p

随后按照提示输入密码。

输入密码时,终端通常不会显示具体字符,这是正常现象。

如果登录成功,将进入 MySQL 交互界面,提示符通常类似:

mysql>

这意味着已经成功连接数据库,可以开始执行 SQL 语句。

6.3 修改初始密码

如果当前安装要求修改首次生成的临时密码,可以在登录后执行:

ALTER USER 'root'@'localhost'
IDENTIFIED BY '替换为自己的强密码';

这里的密码应替换为自己设置的强密码,不要直接使用公开示例密码。

如果修改失败,应根据错误提示检查密码策略和当前账户状态,不建议为了方便学习而关闭密码校验或设置过于简单的密码。

修改完成后,退出:

EXIT;

再次登录:

mysql -u root -p

使用新密码验证是否可以正常登录。

至此,数据库服务的安装和基本登录已经完成。

七、执行第一组 SQL 语句

数据库安装完成后,接下来就可以正式开始学习 SQL。

SQL 是用于定义、查询和操作关系型数据库数据的语言。与前面安装软件和启动服务不同,这一部分开始直接接触数据库本身。

7.1 查看数据库版本

登录 MySQL 后,执行:

SELECT VERSION();

这条语句用于查看当前连接的 MySQL 服务器版本。

7.2 查看数据库列表

执行:

SHOW DATABASES;

该语句用于查看当前账户有权查看的数据库。

数据库是组织和管理数据的基本单位之一,后续可以在数据库中创建数据表,再通过 SQL 对数据进行操作。

7.3 查看当前账户信息

执行:

SELECT USER(), CURRENT_USER();

这条语句可以帮助理解客户端使用的登录身份,以及服务器进行权限判断时使用的账户身份。

7.4 查看服务器字符集

执行:

SHOW VARIABLES LIKE 'character_set_server';

查看当前服务器默认字符集。

字符集会影响文本数据的存储与处理,后续建立包含中文内容的数据表时,需要进一步理解服务器、连接和客户端之间的字符集关系。

7.5 验证数据库服务是否可以持续使用

退出 MySQL:

EXIT;

然后再次登录:

mysql -u root -p

如果能够使用新密码成功登录,并正常执行前面的 SQL 语句,说明数据库服务已经具备基本的学习和操作条件。

八、配置文件与数据库数据目录

完成基础安装后,还需要认识两个重要位置:配置文件和数据目录。

8.1 查看配置文件

执行:

sudo cat /etc/my.cnf

该文件用于配置 MySQL 服务器及相关客户端的参数。

配置文件中可能包含端口、数据目录、字符集和其他服务参数。

初次安装时,不需要急着修改所有配置。先确认默认设置能够正常工作,再根据后续学习需求进行调整。

8.2 备份后再修改配置

如果需要修改配置文件,先备份:

sudo cp -a /etc/my.cnf /etc/my.cnf.bak

然后使用编辑器打开:

sudo vi /etc/my.cnf

修改时,应优先检查现有配置组,避免重复添加冲突的参数。

例如,在已有的 [mysqld] 配置组中,可以按需设置服务器字符集:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci

上述配置适用于相应版本的 MySQL 8.4。若当前配置文件中已有同名参数,应修改原有配置,而不是重复添加。

保存后重启服务:

sudo systemctl restart mysqld

再登录数据库验证:

SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';

如果只是为了完成首次安装和基础 SQL 练习,这一步并非必须。可以先保留默认配置,等学习到字符集和排序规则时再深入研究。

8.3 查看数据目录

执行:

SHOW VARIABLES LIKE 'datadir';

该语句用于查看当前数据库的数据目录。

在常见的 MySQL RPM 安装中,默认目录可能是:

/var/lib/mysql

但具体位置应以当前服务器的实际配置为准。

数据目录中存放着数据库运行所需的数据文件,因此不能随意删除其中的内容。进行卸载、升级或迁移操作前,应先确认数据是否需要保留,并做好备份。

九、常见问题排查

9.1 安装时提示找不到软件包

先检查仓库配置:

sudo dnf repolist all | grep mysql

再检查启用的仓库:

sudo dnf repolist enabled

如果目标版本对应的仓库没有启用,应先修正仓库配置。

还可以刷新软件包缓存:

sudo dnf clean all
sudo dnf makecache

如果仍然失败,再检查网络连接、仓库地址和软件包兼容性。

9.2 MySQL 无法启动

先查看服务状态:

sudo systemctl status mysqld --no-pager -l

再查看日志:

sudo journalctl -u mysqld -n 100 --no-pager

如果默认错误日志文件存在,也可以查看:

sudo tail -n 100 /var/log/mysqld.log

常见原因包括配置错误、初始化未完成、文件权限异常或端口冲突。具体问题应以实际日志为准。

9.3 找不到临时密码

执行:

sudo grep -i 'temporary password' /var/log/mysqld.log

如果没有结果,先检查安装是否完成、服务是否正常运行以及实际日志位置。

不要直接通过关闭权限验证来绕过登录问题。账户恢复属于特殊操作,应遵循对应 MySQL 版本的官方恢复流程,并在完成后确认正常的身份验证与权限机制已经恢复。

9.4 中文显示异常

可以先查看终端环境:

locale

再登录 MySQL,检查字符集相关变量:

SHOW VARIABLES LIKE 'character_set%';

中文显示问题可能来自终端、客户端、连接或服务器配置,需要逐项排查。

不能简单地认为修改服务器字符集就一定能够解决所有乱码问题。

十、本阶段总结与后续学习计划

本篇完成了数据库学习的第一阶段:搭建能够正常运行的 MySQL 环境。

主要内容包括:

  • 确认系统环境与已有数据库软件;
  • 配置 MySQL 官方软件仓库;
  • 安装 MySQL 服务器;
  • 启动服务并检查运行状态;
  • 完成首次登录和密码修改;
  • 执行基础 SQL 语句;
  • 查看配置文件、字符集与数据目录;
  • 掌握基本的错误排查方法。

这次实践的意义不仅是安装了一个软件,更重要的是建立了后续学习数据库的基础环境。

接下来,我准备逐步推进以下内容:

  • 数据库与数据表基础:理解数据库、表、行、列和数据类型。
  • 基础 SQL 语句:学习数据库和数据表的创建,以及数据的增删改查。
  • 数据库设计:学习主键、外键、约束和表之间的关系。
  • 进阶数据库知识:逐步理解索引、事务和查询优化。
  • C++ 数据库实践:在掌握必要的 C++ 和 SQL 基础后,尝试连接 MySQL,完成一个简单的数据管理程序。
  • 综合项目实践:在后续学习中,将程序开发、数据库操作和 Linux 部署结合起来。

目前学校课程比较多,C++、Linux 和数据库会根据实际课程进度同步推进。本系列不追求一次性覆盖所有知识,而是尽量把每个阶段的基础内容学明白、实际操作验证清楚,再进入下一阶段。

数据库学习,从搭建环境开始;后续再从 SQL 出发,逐步理解数据的组织、管理与应用。

参考资料

  • MySQL 官方安装文档
  • MySQL 官方 Yum Repository 指南
  • MySQL 官方仓库配置包下载页面