前言
数字化时代,数据是企业核心资产,数据库作为数据管理关键工具,是 IT 从业者必备技能。本文从数据库基础概念出发,梳理其分类、发展历史与主流产品,重点讲解 MySQL 的 YUM 安装、库表操作(DDL/DML/DQL 等)、用户权限管理,还补充 LVS 与 IPVS 知识,形成 "理论 + 实践" 体系。无论数据库初学者入门,还是从业者巩固技能,都能通过它快速掌握核心技术,应对实际数据管理需求。
一、数据库概述
数据库是 "高效存、管、取数据的工具",按结构主要分两类:
1、关系型数据库
2、非关系型数据库
(一)数据库基础概念
- **数据:**记录客观事物的符号(如数字 "25"、文本 "张三"),是数据库存储的基础,单独存在可能无意义,组合后可形成有用信息。
- **表:**关系型数据库中存储同类结构化数据的 "二维表格"(类似 Excel),有固定列(如 "姓名""年龄")和行(如 "张三,25"),通常会设主键确保每条记录唯一。
- **数据库:**多个相关表(或非结构化数据)的 "集中仓库",比如电商数据库包含用户表、商品表,能避免数据重复,支持多场景数据共享。
- **数据库管理:**对数据库的全流程操作,包括建库建表、增删改查数据、设置权限、备份恢复等,目的是保证数据安全、可用且高效。
- **数据库系统原理:**支撑数据库运行的核心逻辑,比如数据组织方式、用户查询处理机制、数据冲突避免方法,是数据库稳定工作的 "底层规则"。
(二)数据库核心分类
- 关系型数据库:以结构化数据存储在二维表中,不同表之间有一定数据联系。二维表中:
- 每一行是一条记录(描述一个对象的信息);
- 每一列是一个字段(描述对象的一个属性)。

- 非关系型数据库
(1)定义:Not Only SQL,存储方式不限于表,可存储键值对、文档、列式数据等。
(2)典型产品:Redis、Memcached、MongoDB、HBase。
(3)应用场景:高并发、缓存、大数据实时计算。
(4)优点:
- 格式灵活(Key-Value、文档、图片等)
- 速度快(基于内存存储)
- 高扩展性
- 成本低(开源,部署简单)
(5)缺点:
- 不支持 SQL
- 缺少事务处理
- 复杂查询支持不足
- 大部分数据在内存,成本较高
(6)对比 Redis 和 Memcached
- 相同点:都存储热点数据,内存运行,速度快。
- 不同点:Redis 支持持久化,数据可落盘;Memcached 纯内存,断电丢失。
(三)数据库发展历史(三代数据库)
第一代:层次 / 网状数据库(1960年 - 1970年)
第二代:关系型数据库(1970年 - 至今):用 "表" 和 "关系" 存数据,支持 SQL 查询。比如 MySQL、Oracle,结构清晰、易维护,至今仍是企业主流。
第三代:非关系型数据库(2000年 - 至今):应对海量、非结构化数据(如图片、日志),不依赖表结构。比如 MongoDB(存文档)、Redis(存缓存),特点是灵活、读写快。
(四)当今主流数据库介绍
- SQL Server(微软产品):面向 Windows 操作系统,特点是简单、易用。
- Oracle(甲骨文产品):多用于企业核心数据库,适配中大型项目,支持所有主流平台,安全、功能完善,但操作复杂。
- DB2(IBM 产品):属于重量级数据库,支持所有主流平台,具备大型化、安全、完善的特点。
- MySQL(现属甲骨文,原开源):企业通用数据库,免费、开源、体积小。
(五)补充:LVS 与 IPVS 相关
- LVS 通过内核态的 netfilter 框架实现 IPVS 功能,工作在内核态,属于四层架构。
- IPVS 需借助 ipvsadm 工具操作(ipvsadm 工作在用户态,用于操作内核态的 IPVS)。
二、MySQL
1、是什么?
一种关系型数据库,常用版本为 5.7 和 8.0(注意:MySQL 组成集群时,各节点版本必须一致)。
2、干嘛的?
主要用于存储企业或应用的核心数据。
三、YUM安装MySQL数据库

(一)环境准备
下载依赖工具
yum install -y yum-utils
yum install -y unzip
#上传并解压mysql5.7 依赖环境的rpm包
unzip mysql5720_rpms.zip
切换到存放所有 MySQL 及依赖 RPM 包的文件夹
cd mysql5720_rpms
# yum 会自动识别当前目录下所有 .rpm 文件,并处理依赖关系(若本地包已包含所有依赖,会直接安装; 若缺依赖会提示)
yum localinstall -y *.rpm
(补充:mysql.sock 连接数据库内部的通讯文件)
(二) 启动mysql,获取初始密码
systemctl start mysqld

grep password mysqld.log

登录mysql
PS:如果密码内容有特殊字符,需要转义

进入数据库、修改密码并验证:

#修改配置文件:
vim /etc/my.cnf
mysqld
其他原有配置(如datadir、socket等)保持不变,新增以下两行 validate_password_policy=LOW
validate_password_length=6

#启动数据库
systemctl restart mysqld
#进入数据库、修改密码并验证:
mysql -uroot -p
alter user 'root'@'localhost' identified by 'abc123';
#验证1: show databases;(库的列表信息)
#验证2:
exit 退出
mysql -uroot -pabc123

1. 开启错误日志(指定日志文件路径,路径可自定义,建议放/var/log下,默认已开启)
#log_error = /var/log/mysqld.lo
2. (可选)设置错误日志级别(默认是 3)
log_error_verbosity = 3
3=记录所有错误/警告/通知;2=记录错误/警告;1=仅记录错误
四、MySQL 数据库管理

(一)数据库基本操作
1. 查看数据库信息
show databases;
用途:查看当前数据库内部空间中所有的库文件(数据库列表)

2. 切换数据库
use 数据库名
用途:切换当前操作的数据库

3. 查看数据库中的表
show tables;
show tables in 数据库名;

4. 查看表结构
describe 表名;(desc 表名;)
DESCRIBE 表名;

5. 查看表中所有内容
select * from 表名

(二)常用数据类型

注意事项:
- CHAR 存入长度不足时补空格,超出指定长度低版本截取,高版本报错。
- 主键唯一,可由多个字段组成(联合主键)。
(三)数据库文件存储结构
- MySQL 数据目录:
/usr/local/mysql/data - 每个数据库对应一个子目录,每个表对应若干文件:
(1)MyISAM :.frm(表结构)、.MYD(数据)、.MYI(索引)
(2)InnoDB:
- 独享表空间:
.ibd文件(每表一个文件) - 共享表空间:
ibdata文件(多个表共用)
(四)SQL 语句分类
(五)DDL操作(数据库和表管理)
1、创建数据库
create database 数据库名;
2、创建数据表
create table 表名 (
字段1 数据类型 [约束条件],
字段2 数据类型 [约束条件],
...
primary key (主键字段)
);
【ps:主键通常指的是一张表中拥有唯一性约束的字段】
示例:


字段约束:
- not null:不能为空
- default:默认值
- primary key:主键
- unique key:唯一键
- auto_increment:自增长字段
3、删除表
drop table 表名;
drop table 数据库名.表名; -- 不切换数据库时使用
4、删除数据库
drop database 数据库名;
5、修改表结构(ALTER)
(1)修改表名
alter table 旧表名 rename 新表名;
(2)增加字段
alter table 表名 ADD 字段名 数据类型 [约束];
(3)修改字段
- 既能修改字段名称,也能修改字段的数据类型和约束(三者可同时修改,也可只修改部分)
alter table 表名 CHANGE 旧列名 新列名 数据类型 [约束];
- 仅修改字段的数据类型和约束,不能修改字段名称(字段名必须是原表中已存在的,且不能变更)
alter table 表名 MODIFY COLUMN 字段名 数据类型;
(4)删除字段
alter table 表名 DROP 字段名;
(六)DML操作(表数据管理)
1、插入数据
insert into 表名(字段1,字段2,...) values (值1, 值2, ...);
示例1:

示例2:

2、更新数据
update 表名 SET 字段1=值1,字段2=值2,... where 条件;
示例:
update KY13 SET passwd=PASSWORD('') where name='zhangsan';
3、删除数据
delete from 表名 where 条件;
4、清空表
-- 方法1: delete
delete from 表名;
-- 方法2: truncate
truncate table 表名;
- delete 可带 where 条件,可回滚,速度慢
- truncate 不可回滚,速度快,ID 自增重置
(七)DQL操作(数据查询)
1、查询数据
select 字段1,字段2 from 表名 where 条件;
select * from 表名; -- 查询所有字段
2、限制查询结果(limit 限制)
select * from 表名 limit 起始行, 查询条数;
select * from 表名 limit 2; -- 显示前2行
select * from 表名 limit 2,3; -- 从第2行后,开始显示3行
3、竖向显示结果
select * from 表名\G
(八)表高级操作
1、临时表
create temporary table 表名 (...);
- 临时表只存在于当前连接,会在连接关闭时自动销毁
- 可进行增删改查操作
2、克隆表
-- 仅复制表结构
create table 新表名 like 旧表名;
在加上数据表中的数据,需要做插入
-- 插入数据
insert into 新表名 select * from 旧表名;
(九)用户管理
1、创建用户
create user '用户名'@'来源地址' identified by '密码';
- localhost:本地登录
%:允许任意 IP 登录- 密码可使用明文或加密方式
2、查看用户
use mysql;
select user, host, authentication_string from user;
3、删除用户
drop user '用户名'@'来源地址';
4、修改密码
set PASSWORD = PASSWORD('新密码'); -- 当前用户
set PASSWORD FOR '用户'@'来源地址' = PASSWORD('新密码'); -- 其他用户
5、忘记 root 密码处理
(1)修改 MySQL 配置文件(添加跳过权限验证)
找到 MySQL 配置文件 /etc/my.cnf 添加:

保存并关闭配置文件
(2)重启 MySQL 服务并免密登录
- 重启 MySQL 服务(不同系统命令略有差异,选择对应命令)
- 免密登录 MySQL:在终端直接输入以下命令,无需输入密码即可进入 MySQL 命令行(因已配置
skip-grant-tables):bash
bash
mysql -u root
(3)修改 root 密码并刷新权限
- 进入 MySQL 命令行后,执行以下 SQL 语句修改 root 密码(将
'新密码'替换为你需要设置的实际密码):sql
sql
# 更新 mysql.user 表中 root 用户的密码
update mysql.user set AUTHENTICATION_STRING=PASSWORD('新密码') where user='root';
- 执行刷新权限命令,确保密码修改立即生效(不刷新可能导致新密码无法使用):sql
sql
flush privileges
;
- 输入 exit; 退出 MySQL 命令行。
(4)恢复配置文件并重启服务(关键:关闭免密登录)
-
重新打开
/etc/my.cnf配置文件,删除之前添加的skip-grant-tables这一行(若不删除,MySQL 会持续允许免密登录,存在极大安全风险); -
保存配置文件后,再次重启 MySQL 服务,使配置生效;
-
验证新密码:使用修改后的新密码登录 MySQL,确认密码生效:bash
bash
mysql -u root -p # 输入命令后按提示输入新密码,能正常登录即成功
(十)用户授权管理
1、授权用户(分配权限)
基本语法:sql
sql
grant 权限列表 on 数据库.表 to '用户名'@'来源地址' identified by '密码';
*.*表示所有数据库和表
示例:
授权本地用户 zhangsan 对 school 数据库所有表的查询权限,密码 abc123:sql
sql
grant select on school.* to 'zhangsan'@'localhost' identified by 'abc123';
授权用户 lisi 从任意地址访问所有数据库 / 表的全部权限,密码 123456(生产环境慎用):sql
sql
grant all privileges on *.* to 'lisi'@'%' identified by '123456';
**授权后若权限未立即生效,需执行刷新权限命令:**ql
sql
flush privileges;
2、查看授权(权限验证)
基本语法
sql
show grants for '用户名'@'来源地址';
示例:
查看 zhangsan 本地用户的权限:
sql
show grants for 'zhangsan'@'localhost';
3、撤销权限(回收权限)
基本语法s
sql
revoke 权限列表 on 数据库.表 from '用户名'@'来源地址';
示例:
撤销 zhangsan 本地用户对 school 数据库所有表的查询权限:
sql
revoke select on school.* from 'zhangsan'@'localhost';
撤销 lisi 从任意地址访问所有数据库 / 表的全部权限:
sql
revoke all privileges on *.* from 'lisi'@'%';
- 撤销权限后需执行 flush privileges; 刷新权限,确保回收生效;
- 撤销权限时,数据库.表 和 来源地址 需与授权时完全一致,否则撤销失败。
(十一)权限说明
| 权限 | 功能 |
|---|---|
| select | 查询数据 |
| insert | 插入数据 |
| update | 修改数据 |
| delete | 删除数据 |
| create | 创建数据库 / 表 |
| drop | 删除数据库 / 表 |
| index | 建立索引 |
| alter | 修改表结构 |
| execute | 执行存储过程 |
| create view | 创建视图 |
| show view | 查看视图 |
| create routine | 创建存储过程 |
| alter routine | 修改存储过程 |
| event | 创建事件 |
| trigger | 创建触发器 |
| all privileges | 所有权限 |
总结
一、数据库基础体系
- 核心功能:明确 "存、管、取" 数据的核心定位
- 类型差异:区分关系型(二维表存储、支持 SQL,如 MySQL、Oracle)与非关系型(灵活存键值对 / 文档等,如 Redis、MongoDB)数据库
- 发展脉络:梳理从层次 / 网状数据库,到关系型数据库,再到非关系型数据库的迭代历程
- 产品特性:介绍 SQL Server(适配 Windows、易用)、DB2(全平台、安全稳定)等主流产品,奠定理论基础
二、MySQL 实操核心
- 安装流程:详解 YUM 安装(含依赖安装、RPM 包处理)、初始密码获取与修改步骤
- 核心操作:
- DDL:库表创建 / 删除 / 修改
- DML:数据插入 / 更新 / 删除
- DQL:数据查询(含 limit 限制、竖向显示)
- 进阶操作:覆盖临时表克隆、MyISAM 与 InnoDB 文件存储差异,形成完整实操手册
三、用户与权限安全
- 用户管理:含用户创建、查看、删除,及 root 密码重置(含遗忘解决方案)
- 权限控制:明确授权、查权、撤权操作及语法,说明 select、all privileges 等权限功能
- 安全原则:强调生产环境 "权限最小化",如慎用 "%" 任意 IP 授权,保障数据库安全