前言
在学习数据库之前,首先最重要的就是如何安装数据库。本文讲述的是 MySQL 数据库的安装过程,为了更好的掌握 MySQL,直接使用 Linux 终端来进行学习。
1. 数据库相关环境的安装
1. 使用的 Linux 环境
目前使用的 Linux 版本是 CentOS 7,虽然该版本之后将不再更新,但对于学习 Linux 比较友好。
2. 卸载不要的环境
输入下面的指令来卸载掉不需要的环境。
ps aux | grep mariadb # 先检查是否有 mariadb 存在
# 如果出现一大段数据,那么代表着此时已经存在了
systemctl stop mariadb.service # 停止 mariadb 服务
# 之后再输入第一条指令,就可以看到服务已经成功停止了
3. 检查系统的安装包
输入下面的指令,查看此时安装包是否存在。
grep mariadb
grep mysql
# 输入第二条指令,可能会出现下面的内容
# mysql-community-common-5.7.41-1.el7.x86_64
# mysql-community-server-5.7.41-1.el7.x86_64
# mysql57-community-release-el7-11.noarch
# mysql-community-client-5.7.41-1.el7.x86_64
# mysql-community-libs-5.7.41-1.el7.x86_64
4. 卸载默认安装包
输入下面的指令。
sudo yum remove mariadb # 超级用户进行删除
5. 获取 MySQL 中的官方 yum 源
需要到官方网站去获取 yum 源:https://repo.mysql.com/。 此时需要找到和我们 Linux 系统一个版本的 MySQL。为了保持运行环境一致,推荐采用 5.7 这个版本。 这里我们需要安装和 Linux 系统环境一致的版本。如果不知晓自己的 Linux 的版本是多少,可以输入下面的指令:
cat /etc/redhat-release
当前 CentOS 的版本是 7.9,所以选择 el7.9 即可(代表 centos 的 7.9 版本)。点击下载相关的 rpm 文件,将其放入到 Linux 系统中。
rz # 把 Windows 系统的相关文件等等放入到 Linux 中
6. 将获取的 yum 源进行解压
压缩包已存在于 /root 路径下。需要将.rpm 样子的压缩包进行解压操作。
rpm -ivh 压缩包的名字
压缩完之后,为了查看是否成功的安装,可以输入下面的指令。
ls /etc/yum.repos.d/ -l
7. 安装 MySQL 服务
输入下面的指令进行安装 MySQL(根据上面 yum 源的配置):
yum install -y mysql-community-server # 安装服务器和客户端
如果在安装的时候遇到报错:
Failing package is: mysql-community-client-5.7.39-1.el7.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
这代表着秘钥过期了,输入下面的指令,再重新安装一次即可。
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
8. 查看自己是否安装成功
进行完上面的安装操作以后,需要进行两个操作来查看 MySQL 是否安装成功了。
1. 查看配置文件
输入下面的指令,如果相符,那么代表第一个操作正确。
ls /etc/my.cnf
2. 查看数据存储位置
输入下面的指令,和图中相符的话代表是正确的。
ls /var/lib/mysql
如果上面两个指令都执行成功的话,那么说明此时我们安装成功了。
9. 启动 mysqld 服务器
输入下面的指令即可成功的启动服务器:
systemctl start mysqld.service
之后查看服务器是否启动了,输入下面的指令。
ps axj | grep mysqld
出现第一行内容,即可代表成功启动服务器了。
10. 配置 mysql 配置文件
通过 vim 打开相关 mysql 配置文件,进行相关配置。
vim /etc/my.cnf
在文件的最后,加入下面的代码:
skip-grant-tables # 代码没有密码就可以进行 mysql 的登录
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server=utf8
default-storage-engine=innodb
# 配置完毕,重启 mysql 即可
11. 尝试登录 mysql
在进行上面的配置结束以后,输入下面的指令进行 mysql 的登录。
mysql -uroot -p # 最好使用 root 账户
直接 enter 即可,因为上面我们配置了可以无须密码登录,所以此时确定即可。
2. 数据库是什么
通常,我们习惯于使用文件存储数据。然而,单纯依赖文件存储存在诸多弊端:
- 文件安全性脆弱,数据极易泄露或被非法篡改;
- 数据查询和管理效率低下;
- 不适合存储海量数据;
- 在实际编程中使用极不方便。
因此,我们需要一种更高效、更安全的数据存储方案——数据库。 数据库通常采用磁盘或内存存储,这种存储机制使其能够更高效、更灵活地管理和存储大规模数据。与传统文件存储相比,数据库在数据安全、检索速度和管理便捷性上都具有显著优势。所以,数据库其实就是一个存储大规模数据的'文件夹'。
3. 主流的数据库
当今,数据库有很多的种类,常见的数据库包括:
- SQL Server:微软的产品,.Net 程序员的最爱,中大型项目。
- Oracle:甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如 MySQL。
- MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的 SQL 处理效果好。
- PostgreSQL:加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
- SQLite:是一款轻型的数据库,是遵守 ACID 的关系型数据库管理系统,它包含在一个相对小的 C 库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百 K 的内存就够了。
- H2:是一个用 Java 开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。
4. 表是什么
当我们首次登录数据库的时候,输入下面的指令,就可以看到 MySQL 有几个数据库。
show databases; # 这条指令是查看 MySQL 中的数据库有几种,这里要提醒各位,数据库最后是需要;结尾的,这个点要注意。
MySQL 中的数据库在 Linux 中,是以目录的形式存在的。也就是说当我们建立数据库的时候,其实就是在 Linux 下建立一个目录。此时我们在 Linux 中输入下面的指令,就可以看到上面的库。
ll /var/lib/mysql/
这些目录就是上面中我们查看到的数据库。但是我们一般都不是对数据库进行操作,而是对数据库中的表进行操作。数据库的表其实就是 Linux 下的一个个文件,表里面都是存储一些重要的数据。
5. 服务器,数据库,表关系
所谓安装数据库服务器,只是在机器上安装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。 它们的三者的关系如下所示: 当然,我们进行建立数据库,创建表等等的操作,这些工作其实都是 mysqld 来帮助我们完成的,它是 MySQL 的服务器,而 mysql 是 MySQL 的客户端。
6. 快速上手数据库
为了让更好的知晓数据库应该如何进行操作,下面简单的给各位使用一下相关的指令。
1. 创建一个数据库
create database boke_1;
2. 看一眼是否创建成功
show databases;
3. 进入数据库
use boke_1;
4. 查看有几张表
show tables; # 此时没插入内容,所以为空
5. 创建一个表
create table t1(
name varchar(20) not null,
tel varchar(20)
);
6. 插入两组数据
insert into t1 values('小王','121212323'),('小李','1121212');
7. 查看表内容
select * from t1;
以上就是 MySQL 相关的简单操作。
7. MySQL 架构
MySQL 是一个可移植的数据库,几乎可以在当前所有的操作系统运行,如 UNIX/Linux,Windows、MAC。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。
8. SQL 分类
一般来说,SQL 是分为下面这三类的。
- DDL【data definition language】数据定义语言,用来维护存储数据的结构。就比如:create,drop,alter。
- DML【data manipulation language】数据操纵语言,用来对数据进行操作。例如:insert,delete,update。
- DCL【Data Control Language】数据控制语言,主要负责管理和事务。例如:grant,revoke,commit。
9. 存储引擎
1. 是什么
存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。MySQL 的核心就是插件式存储引擎,支持多种引擎存储。
2. 在哪里
通过一条指令就可以查到。
show engines;
涉及的存储引擎一般就是第一行那个,这点记住就好。
3. 存储引擎对比
(此处省略对比图表,建议查阅官方文档)

