数据库-简介与安装-01

2019-11-11  本文已影响0人  流云若雨

一.数据库课程介绍

1.课程大纲(作为DBA必会)
    数据库介绍
    mysql版本为5.7 介绍及安装
    mysql的体系结构及基础管理
    sql基础 语句+元数据获取
    索引及执行计划管理
    存储引擎
    日志
    备份恢复
    主从复制
    高可用及读写分离
    分布式数据库
    mysql全面优化
    DBA就业指导
    redis MongoDB ElasticSearch

2.IT人员具备的职业素养

1.人品
2.严谨
3.心态
4.细心

3.熟悉操作系统(精通)

Linux centos6/7/8

4.熟悉云架构

docker

5.熟悉业务

业务
产品的功能
用户的行为

6.熟悉行业

数据排名https://db-engines.com/en/
参加数据库大会
跟行业牛人交流

7.喜欢数据库

坚持
自己品!!!!

====================================

二.数据库产品介绍

1.数据库管理系统(DBMS)database management servier/Database Management System
  RDBMS    关系型数据库
    oracle   
    mysql
    mssql 
    PG
  NOSQL    非关系型数据库
    mongodb
    redis
    ES
    memcached  
  MEWSQL   分布式数据库
    RDS,DRDS   ---->alisql      TDDL    
    polarDB      ---->OB(做成一体机)
    pincap     tidb
2.MySQL产品分支(了解)
  oracle  MySQL
  MariaDB  5.5  -----> 10.0
  percona  MySQL
  RDS/TDSQL  云数据库
3.MySQL  企业版本选择
  5.6   5.6.34  5.6.36  5.6.38 
  5.7   5.7.18  5.7.20  5.7.22  5.7.24  5.7.26(现在使用的)
  8.0   8.0.10之前都是测试版本  8.0.11
  GA时间:5.6.38  5.7.20 2017-09-13
MySQL二进制版本下载地址https://downloads.mysql.com/archives/community/
图片.png

三.MySQL 5.7.26 二进制版本 手撕(安装)

1.规划
OS: Centos 7.6 
磁盘: 20G(system)+50G(/data)
IP:10.0.0.51 
hostname: db01 
/etc/hosts10.0.0.51 db01
iptables: OFF 
SELINUX: disabled
2.数据目录规划
[root@db01 ~]# mkfs.xfs  /dev/sdb
[root@db01 ~]# blkid
/dev/sda1: UUID="fd2e0ca7-32be-425f-86a2-85c02b9ec5ea" TYPE="xfs" 
/dev/sda2: UUID="79a3924b-739e-48dc-ab0c-0444b9ac6591" TYPE="swap" 
/dev/sda3: UUID="3a3a295f-88f8-456d-94dc-1a3eeb517c02" TYPE="xfs" 
/dev/sdb: UUID="8c6d28bb-4c6e-4ea3-a59d-5a256b3b56fc" TYPE="xfs" 
[root@db01 ~]# vim /etc/fstab 
添加:
UUID="8c6d28bb-4c6e-4ea3-a59d-5a256b3b56fc" /data                 xfs     defaults        0 0

[root@db01 ~]# mkdir /data
[root@db01 ~]# mount -a
[root@db01 ~]# df -h
3.软件上传解压
[root@db01 /usr/local]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
文件该名称或者创建软连接:mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql
4.原始环境检查
①检查有没有原来版本的软件,如果有就 卸载:
检查:rpm -qa|grep mariadb
卸载:yum remove mariadb-libs -y
5.用户权限准备
创建虚拟用户:useradd -s /sbin/nologin -M mysql
修改目录权限:chown -R mysql.mysql /data
            chown -R mysql.mysql /usr/local/mysql
6.设置环境变量
  vim /etc/profile 
  添加:export PATH=/usr/local/mysql/bin:$PATH
  让这个文件重启一下生效:source /etc/profile
检查一下有没有安装成功:mysql -V(大写)
 显示结果:mysql  Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using  EditLine wrapper
5.7以后的版本有两种方法可以设置密码
一种是系统自动生成的 但是密码非常的麻烦,不容易记住:mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
另外一种是自己设置的:mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
(密码可以要也可以不要)
报错:mysqld: error while loading shared libraries libaio.so.1: cannot open shared object file: No such file or directory
解决方法:yum install -y libaio-devel
说明
--initialize             使用一种安全的模式初始化数据.   
特点:   1. 初始密码   2. 密码复杂度    3. 密码过期时间??
--initialize-insecure    使用一种不安全的模式初始化数据.
1. 无密码    2. 无密码复杂度   
5.7以前的版本只有一种方法
    /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
7.编写配置文件
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
##四.MySQL的体系结构
#####1.MySQL  c/s结构
    server端:mysqld
    clint端:mysql,mysqldump,第三方程序(开发)
#####2.

公司: BoSS + 经理 + 员工 + 办公区
实例: mysqld + Mater Thread + 干活Thread + 专用内存



#####3.mysqld核心程序结构
    0.面试:1条sql语句在mysql中是如何处理的?
    1.sql语句:结构化查询语句
    2.sql分类:DDL(数据定义语言),DCL(数据控制语言),DML(数据操作语言)
    3.一条sql语句:
![图片.png](https://img.haomeiwen.com/i18572205/6e413c2a5a8fb8a7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
4.sql语句的执行过程
    连接层:
        ①提供连接协议
        TCP/IP:网络scoke=IP+Port
        本地socket:socket文件
        ②验证用户名密码,ip
        ③提供连接线程
            负责:sql接受和结果的反馈
图片.png
    sql层
        (1):语法检查
        (2):语义检查
        (3):权限检查
        (4):解析:生成多种执行计划数
        (5):优化器:判断哪一种执行计划,代价最低
            资源代价:CPU,IO,MEM
        (6):执行器:执行优化器选择后的执行计划执行。得到需要查询数据的存储位置
      存储引擎层:(文件系统)
            和磁盘打交道的层次,
            转回给sql层,结构域化成表,通过连接线程返回结果。
执行过程简图

五.物理存储结构

宏观(角度观察):
myisam存储引擎
    -rw-r----- 1 mysql mysql   10816 Nov 11 12:03 user.frm   表结构
    -rw-r----- 1 mysql mysql     340 Nov 11 12:03 user.MYD   表数据
    -rw-r----- 1 mysql mysql    4096 Nov 11 12:03 user.MYI   索引
INNODB 存储引擎表(5.5以后主用innodb):
    time_zone.frm  表结构
    time_zone.ibd  数据+索引(IOT)
微观(角度观察):
segment(段):一个(非分区表)表就是一个段,由一个或多个区构成。
extent(区   :《连续》的64个page,默认1M
page(页)   :MySQL的最小物理IO单元,默认IO(1页=16kb),《连续》的4个OS block

六.MySQL逻辑结构(逻辑概念)

库 -------> 目录
表 ------->表文件
列 :列名+列属性(约束,数据类型,其他属性)
行 :记录
属性:数据行,权限等....

七:mysql基础管理

1.mysql的用户管理
作用?
登录mysql    管理mysql
2.用户的定义
用户名@'白名单'
什么是白名单?允许用户登录的"范围" (ip段)
oldguo@'10.0.0.5%'  
oldguo@'10.0.0.%'
oldguo@'10.0.0.0/255.255.254.0'
==================
oldguo@'10.0.0.254'
oldguooldguo@'%'
oldguo@'%'
oldguo@'localhost'
oldguo@'oldguo.com'
3.用户的管理命令
1.查
5.7+:mysql> select user,host ,authentication_string from mysql.user;
5.7-:mysql> select user,host ,password  from mysql.user;
2.增(创建用户)
mysql> create user oldboy@'10.0.0.%'; 
3.改
alter user oldboy@'10.0.0.%'  identified by '123';
4.删
drop user oldboy@'10.0.0.%';
4.权限的定义
权限定义方法:  GRANT ALL ON 权限作用范围  TO 用户 IDENTIFIED BY 密码;
GRANT SELECT, INSERT, UPDATE, DELETE ON oldguo.*  TO  oldguo@'10.0.0.%'  IDENTIFIED  BY '123'
权限作用范围:
*.*  -R /
oldboy.*  -R /oldboy
oldboy.t1 /oldboy/t1
5.权限管理
①授权
  例子:创建并授权超级管理员用户root,能够通过10网段任意地址管理数据库.
grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;
2.查询用户权限
show grants for root@'10.0.0.%';
例子2: 创建一个应用用户app,能够通过10网段访问(SELECT, INSERT, UPDATE, DELETE)app库的所有表
grant SELECT,INSERT,UPDATE,DELETE on app.* to app@'10.0.0.%' identified by '123';
回收:
说明:多次授权是叠加关系,修改权限只能回收
收回app的删除权限
show grants for app@'10.0.0.%';
grant SELECT,INSERT,UPDATE,DELETE on app.* to app@'10.0.0.%' identified by '123';
给权限 
revoke delete on app.* from app@'10.0.0.%';收回权限的方法

新特性:

8.0以前:命令权限
  all
SELECT, INSERT, UPDATE, DELETE, CREATE, RELOAD, 
SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER,
 SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, 
REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,   
CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, 
TRIGGER, CREATE TABLESPACE,DROP
with grant option
8.0以后:支持角色功能,自由打包需要的权限

作业:

实现systemd模式管理mysql启动关闭(systemd); systemctl start/stop/restart mysqld
vim /etc/systemd/system/mysqld.service 
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
或者:   
chkconfig --add mysqld 
systemctl start/stop/restart  mysqld 
上一篇下一篇

猜你喜欢

热点阅读