数据库学习笔记(一):在 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 官方仓库配置包下载页面