文章目录
- 一、基本了解
- 1.1 DBMS数据库管理系统
- 1.2 主流关系型数据库
- 1.3 数据表概念
- 1.4 关系型数据库的组成
- 1.5 数据类型
- 1.5.1 数值型
- 1.5.1.1 整数型
- 1.5.1.2 小数型
- 1.5.2 字符串型
- 1.5.3 日期时间型
- 1.5.4 枚举型
- 二、yum安装mariadb
- 三、二进制安装mysql
一、基本了解
前提背景:
- mariadb是一种关系型数据库,其前身是5.7版本的mysql数据库。
- 当时mysql数据库因免费开源就迅速火热起来,直接占领了90%的市场,后来被oracle公司收购后,就开始收费,随后原班团队又基于v5.7mysql打造了mariadb,一出来就是10.0版本。
- 现很多公司使用的都是5.7版本的myql数据库,也有使用10.0版本的mariadb数据库,两个数据库95%的相似。
什么是关系型数据库?
- 存放表与表之间具有关联关系表的数据库,称之为关系型数据库。
1.1 DBMS数据库管理系统
DBMS与RDBMS:
- DBMS是用于存储和管理数据的软件,可提供对数据的操作(插入,删除、更新),还可以执行定义,创建,修改和控制数据库的功能。它是专门用于创建和维护数据,并使单个业务应用程序能够提取所需的数据。
- RDBMS关系数据库管理系统(RDBMS)是DBMS系统的高级版本。与DBMS相比,RDBMS系统还允许组织更有效地访问数据。RDBMS是一个软件系统,用于仅存储需要以表格形式存储的数据。在这种系统中,数据以行和列的形式进行管理和存储,这被称为元组和属性。
DBMS概念:
- 数据库管理系统,简称DBMS。是针对数据库文件及数据进行【统一管理】的【软件系统】。
- DNMS作用非常强大,既可以识别我们传输的SQL所表达的意思,对数据库里的表数据进行增删改查,又可以对数据进行管控,限制用户对表数据进行操作的权限,还可以进行数据维护等众多功能。
1.2 主流关系型数据库
- 甲骨文Oracle:Oracle数据库是世界上最受欢迎的企业数据库之一,旨在支撑可靠、安全的存储,检索和处理所有形式的数据。常用于金融、医药类传统行业或者是政府部门。
- 微软SQL Server:SQL Server由世界第一软件提供商MICROSOFT公司推出,是与Oracle、IBM的DB2齐名的企业级商用数据库“三巨头”之一。与其他数据库相比,其操作性和交互性有着很大的优势,常用于ERP系统、商业智能、零售商、餐饮、事业单位等场景。局限性很大,只有运行在windows和Linux系统才能获得最大的性能支撑。
- mysql、mariadb:是一款安全、跨平台、高效的,并与PHP、Java等主流编程语言紧密结合的数据库系统。是目前运行速度最快的SQL语言数据库之一,开源免费,简单易用,深受互联网行业喜爱。
1.3 数据表概念
数据库:用于存储数据的仓库,按照【特定格式】存储的【数据文件】的集合,由若干数据表组成。
表:由若干字段和若干记录组成的二维表格。
字段:数据类型相同的列,表头称为字段名称。
记录:一行记录就是一条数据。
主键:具有唯一标识记录的字段。
约束:向数据表提供的数据要遵守的限制。
- 主键约束:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行。且必须提供数据,不能为空,一个表只能存在一个。
- 一键约束:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行。允许为空,一个表可以存在多个。
- 外键约束:一个表中的某字段可填入数据取决于另一个表的主键已有的数据检查性约束。普遍会和主键约束一起使用,用来确保数据的一致性。对于两个具有关联关系的表来说,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。所以外键就是用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
1.4 关系型数据库的组成
关系型数据库常见组件:
- 数据库:database
- 表:table,由行(row)和列(column)组成
- 索引:index
- 视图:view
- 用户:user
- 权限:privilege
- 存储过程:procedure
- 存储函数:function
- 触发器:trigger
- 事件调度器:event scheduler
mysql数据库程序组成:
- 客户端:若是安装的mariadb,则客户端是mariadb;若是安装的mysql,则客户端是mysql。
- mysql/mariadb:CLI交互式客户端程序。
- mysql_secure_installation:安全初始化,强烈建议安装完以后执行此命令。
- mysqldump:mysql备份工具。
- mysqladmin:数据备份工具,也可以设置密码。
- 服务端: 若安装的是mariadb,则服务端是mariadb-server;若是安装的mysql,则服务端是mysqld。
服务器监听的两种socket地址:
- ip socket:默认监听在tcp的3306端口,支持远程通信。
- unix sock:监听在sock文件上(/tmp/mysql.sock,/var/lib/mysql/mysql.sock),仅支持本地通信,server地址只能是:localhost,127.0.0.1。
1.5 数据类型
1.5.1 数值型
1.5.1.1 整数型
基本了解:
- 1 Bytes=1字节,磁盘空间大小单位。
- 每在服务器上存一个8位数的二进制数字,就会占用1字节的磁盘空间,例如:10101101
- 有符号:signed。
- 无符号:unsigned。
举例:
- 年龄字段应该为正整数,所以应该设置成Age int unsigned。
理由:
- Age INT ,默认设置成有符号的,为Age int signed。但年龄不应该存在负数,所以应该设置成无符号的,为:Age int unsigned。
1.5.1.2 小数型
- float 、double超出精度,会自动进行四舍五入处理。
- 比如Salary float(10,2),如存入数据为1000.005,则获取数据为1000.01。
- decimal精度可达28位,用于应对科学、金融、经纬度等数据精度要求高的场景。
- 比如Salary decimal(10,2)。
1.5.2 字符串型
1.常用字符串型。
- char是定长字符串,varchar是变长字符串。
- EmployeeID char(20),存入字符串内容:‘EMP-00001’,依然会占据20个字符的空间。
- EmployeeID varchar(20),存入字符串内容:‘EMP-00001’,则只会占据9个字符的空间。
2.文本型。
- text无法设置长度,占据空间固定。
- EmployeeID text ,存入字符串内容:‘EMP-00001’,会占据65535个字符的空间。
- 所以文本型字符串用的少,更多使用varchar字符串型。
1.5.3 日期时间型
- date类型字段,只能存储日期数据。datetime类型字段,则可以存储日期和时间。
- JoinedAt date,只能存入日期:‘2022-01-05’。
- JoinedAt datetime,则可以存入日期和时间,‘2022-01-05 10:10:00’。
- datetime和timstamp类型字段,都可以存储日期和时间,主要区别在于存储的范围不同。有时区概念,不常用,一般采用datetime类型。
1.5.4 枚举型
- 枚举类型作用:限制存入内容只能是固定值,任选其一。
- Gender enum (‘男’,‘女’)
- JobPosition enum(‘业务经理’,‘开发人员’,‘顾问’)
二、yum安装mariadb
三种安装方式:
- 源代码:编译安装。
- 二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用。
- 程序包管理器管理的程序包:
- rpm安装:OS Vendor操作系统发行商提供;项目官方提供的。
- deb安装
注意事项:
- mariadb与mysql有些不同,mariadb安装后默认没有密码就可直接登录数据库,而mysql安装后有个默认密码,在/var/log/mysql/mysql.log日志中查找该密码,需使用默认密码方能登录数据库。
- mariadb安装后需要设置密码,设置的密码是保存在数据库中的某张表里,采用密文方式保存。
- mariadb-server是服务端,mariadb是客户端。
- 若使用yum源安装mysql,则需要卸载最开始安装的yum源,防止自动升级,卸载命令rpm -e mysql57-community-release。但在公司中一般都是使用二进制安装。
1.yum安装。
yum -y install mariadb mariadb-common mariadb-devel mariadb-server
2.启动服务,并设置开机自启。
systemctl start mariadb
systemctl enable mariadb
3.默认无密码,登录数据库。
4.设置数据库密码为qingjun,此时登录数据库就需要输入密码才能登录。
set password = password('qingjun');
5.查看数据库内的保存密码
select * from mysql.user\G;
6.修改数据库密码。
##方式一。
SET password for 'root'@'localhost'=password('123456');
##方式二。
UPDATE mysql.user SET password=password('999') WHERE user='root';
flush privileges;
三、二进制安装mysql
- 二进制包下载官网
- 二进制安装与yum安装方式不能共存,需要保证环境干净。
配置文件:
- mysql的配置文件为/etc/my.cnf,可以在多个位置配置,存在优先级。
- 配置文件查找优先级:/etc/my.cnf ——> /etc/mysql/my.cnf ——> --default-extra-file=/PATH/TO/CONF_FILE ——> ~/.my.cnf
mysql常用配置文件参数:
参数 | 说明 |
---|---|
port = 3306 | 设置监听端口 |
socket = /tmp/mysql.sock | 指定套接字文件位置 |
basedir = /usr/local/mysql | 指定MySQL的安装路径 |
datadir = /data/mysql | 指定MySQL的数据存放路径 |
pid-file = /data/mysql/mysql.pid | 指定进程ID文件存放路径 |
user = mysql | 指定MySQL以什么用户的身份提供服务 |
skip-name-resolve | 禁止MySQL对外部连接进行DNS解析 使用这一选项可以消除MySQL进行DNS解析的时间。 若开启该选项,则所有远程主机连接授权都要 使用IP地址方式否则MySQL将无法正常处理连接请求 |
1.创建系统用户和组。
useradd -r -M -s /sbin/nologin mysql
2.解压安装包,并做软连接。
tar xf mysql-5.7.41-linux-glibc2.12-x86_64.tar
tar zxf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
cd /usr/local/
ln -s mysql-5.7.41-linux-glibc2.12-x86_64/ mysql
chown -R mysql.mysql mysql*
3.配置环境变量。
echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
4.创建数据目录。
mkdir /opt/data
chown -R mysql.mysql /opt/data
5.数据库初始化,注意最后输出的临时密码。
mysqld --initialize --user=mysql --datadir=/opt/data/
6.定义配置文件。
vim /etc/my.cnf
[mysqld] #表示服务端,固定写法
basedir = /usr/local/mysql #安装目录
datadir = /opt/data #数据存放位置
socket = /tmp/mysql.sock #套接字文件存放位置
port = 3306 #默认端口
pid-file = /opt/data/mysql.pid #进程文件存放位置
user = mysql #那个用户启动服务
skip-name-resolve #关闭域名解析域名连接,跳过名称解析
7.配置服务脚本。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
8.启动服务,并设置开机自启。
service mysqld start
chkconfig --add mysqld
9.使用临时密码登录数据库,设置密码。若缺少依赖包可以是使用whatprovides来查看安装什么包。
yum whatprovides libncurses.so.5
10.设置免密登录。注意不同的系统用户需家目录
[root@localhost ~]# vim .my.cnf
[client]
user = root
password = citms