目录
一、数据库介绍
1.数据库基本概念
数据库管理系统叫DBMS
数据:记录数据,信息
表:存放信息的集合,存放行和列的信息
数据库:表的集合
2.DBMS分类:
RDBMS(关系型数据库软件):主流核心使用数据软件
NoSQL(非关系数据库软件):辅助数据库软件程序
DDBMS(分布式数据库软件):解决海量数据存储与管理 (NewSQL)
3.DBMS的工作模式:
1.接受应用程序的数据请求和处理请求
2.将用户的数据请求转换为机器代码(底层)
3.实现对数据库的操作
4.从数据库的操作中接受查询结果
5.对查询结果进行处理(格式转换)
6.将处理结果返回给用户
4.数据库服务作用:
可以实现数据稳定存储(安全性)
可以分析管理数据信息(数据分析查询) 注册 -- 数据库识别 -- 二进制 -- 磁盘
5.数据库服务分类
1.关系型数据库SQL:二维表结构数据库--->excel
特点:存在硬盘,易于维护(表结构),使用方便,支持复杂操作
代表:MySQL Oracle Mariadb PostgreSQL(海量数据存储场景--金融行业)
2.非关系型数据库NoSQL:提高数据存储和读取效率 --->key value 键值对
辅助关系型数据库,解决高并发访问问题
特点:存在内存中,可高并发读写,,数据库具有高扩展与高可用
代表:redis mongodb ES(日志信息存储)
3.新型数据库:业务整合 分布式(垂直分布式 水平分布式)
特定:对海量数据使用
代表:代表产品:OceanBase TiDB PolarDB
6.关系型数据库和非关系型数据库的区别
1.关系数据库:
关系数据库结构是二维数据库表
关系数据库存储在硬盘当中,读写系统就会受到的IO限制或者瓶颈
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
2.非关系型数据库
key value 键值对
存在内存中
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
4、好多数据写在内存中
二、MySQL数据库
1.特点
性能卓越、服务稳定
开源、无版权限制、成本低
多线程、多用户
基于C/S(客户端/服务器)架构
安全可靠
2.版本演变
5.1 --> 5.5 --> 5.6 --> 5.7 --->8.0
MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用
MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用
三、Mysql安装(编译)
1.安装环境依赖包
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
2.创建运行用户
useradd -M -s /sbin/nologin mysql
3.下载包放到/opt
cd /opt
tar xf mysql-boost-5.7.20.tar.gz
4.mkdir -p /usr/local/mysql
5.cd mysql-5.7.20
6.编译安装
7.make -j2 && make install
8.修改mysql配置文件
vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
explicit_defaults_for_timestamp=true
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
9.更改mysql安装目录和配置文件的属主属组
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
10.设置路径环境变量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile #刷新使其生效
11.初始化数据库
cd /usr/local/mysql/bin/
12.添加musql系统服务
#使其能使用systemd服务
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload 刷新识别
systemctl start mysqld.service 开启服务
systemctl enable mysqld 开机自启动
ss -anpt | grep 3306 |tr -s ' ' 查看端口
13.修改mysql登录密码
mysqladmin -u root -p password "abc123"
#刚开始没密码是空的直接回车,按回车
mysql -u root -p
#这个命令敲下,提示要输入密码,这个就是刚才设置的密码abc123