数据库介绍和MySQL安装
第1章 数据库管理系统(DBMS)
1.1 关系型数据库(RDBMS)
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
代表:ORACLE
、MySQL
、MSSQL
、PG
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
1.2 非关系型数据库(NoSQL)
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。五结构化 KV(Redis,memcache,Tair) 、 json(MongoDB,ES)
代表:Redis
、 MongoDB
、 ES
、HBASE
、Hadoop
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
1.3 非关系型数据库的分类和比较:
1、文档型
2、key-value型
3、列式数据库
4、图形数据库
第2章 数据库架构演变
数据库架构演变:
第一代: RDBMS
第二代: RDBMS+NoSQL +分布式
第三代: NewSQL(分布式)
AliSQL(网站) + OB(蚂蚁金服)+ openstack+ Docker + K8s
RDS + PolarDB
第3章 MySQL简介及产品线
3.1 MySQL行业主流版本
5.6 : 5.6.34,5.6.36,5.6.38,5.6.40
5.7 : 5.7.18,5.7.20,5.7.21,5.7.22,5.7.24 ,5.7.26
5.6.38,5.7.20 ====> 2017-09-13
8.0 :(现在开始研究新特性)
8.0.11 ,8.0.12 …..8.0.17
3.2 企业版本选择(MySQL分支版本),笔试题
Oracle:
MySQL官方版
红帽 :
MariaDB: 5.5 ,10.X
Percona:
PerconaDB
3.3 版本选择建议要上新环境
- 一般选择官方主流版本:5.6,5.7
- GA(稳定发布版)
- 6-12月的产品版本
面试题:
你们公司用什么版本数据库? 具体什么小版本号?
5.6.20 5.6.34 5.6.36 5.6.38 5.6.40
5.7.18 5.7.20 5.7.22
第4章 MySQL二进制安装
4.1 下载并上传解压MySQL软件
官网下载地址 https://dev.mysql.com/downloads/
1 | cd /usr/local |
4.2 修改环境变量
1 | vim /etc/profile |
4.3 创建用户
1 | yum remove mariadb-libs -y |
4.4 创建相关目录并授权
1 | mkdir -p /data/mysql/data #存放数据 |
4.5 数据初始化(建库)
(1)5.7+版本
1 | yum -y install libaio-devel |
说明:
(1) –initialize
密码长度,至少12位.
密码复杂度4种
密码过期时间180天
自动生成一个临时密码
(2) –initialize-insecure
没有限制
(2)5.6+版本
1 | /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data |
4.6 准备启动脚本和配置文件
(0) 配置文件
1 | cat > /etc/my.cnf <<EOF |
(1) sys-v (centos6)
1 | cd /usr/local/mysql/support-files |
(2) 使用systemd管理mysql
1 | [root@db01 ~]# cat /etc/systemd/system/mysqld.service |
如何确实MySQL数据库是否启动(至少两种)?
1 | mysql直接登录 |
4.7 设置管理员初始密码
1 | [root@db01 ~]# mysqladmin -uroot -p password 123 #创建初始密码 |
4.8 本地管理员密码忘记处理
(1) 关闭数据库
1 | [root@db01 ~]# systemctl stop mysqld |
(2) 启动到”安全模式”
1 | [root@db01 ~]# mysqld --skip-grant-tables --skip-networking & |
(3) 刷新授权表,改密码
1 | mysql> flush privileges; |
(4) 正常启动数据
1 | [root@db01 ~]# pkill mysqld |
第5章 MySQL基础管理
5.1 用户管理
5.1.1 用户的定义
1 | Linux: 用户名字表示用户,例如oldguo等 |
5.1.2 用户的作用
Linux :
登录系统
管理系统对象(文件,目录.....)
MySQL :
登录数据库
数据库对象(库,表,.....)
5.1.3 用户的管理命令
(1) 创建用户
1 | mysql> create user oldguo@'10.0.1.%'; |
(2) 查询用户
1 | mysql> select user,host,authentication_string from mysql.user; |
(3) 修改用户
1 | mysql> alter user oldguo@'10.0.1.%' identified by '123'; |
(5) 删除用户
1 | mysql> drop user oldboy@'10.0.1.%'; |
5.2 权限管理
5.2.1 权限的定义
1 | Linux : R W X |
5.2.2 权限的作用
权限的作用 : 控制用户,能够对数据库对象做哪些操作.
5.2.3 授权
1 | #格式 |
5.2.4 查询权限
1 | mysql> show grants for oldboy@'10.0.1.%'; |
5.2.5 回收权限
1 | mysql> revoke grant option on *.* from admin@'10.0.1.%'; |