mysql-01

把最簡(jiǎn)單的事情做的最漂亮么翰,最專業(yè)黔漂。

不要怕成功的門很擁擠,因?yàn)楹芏嗳嗽诎肼肪鸵呀?jīng)放棄了.

----oldguo

mysql掌握程度 星級(jí)
(1) MySQL 簡(jiǎn)介及安裝升級(jí) *****
(2) MySQL 體系結(jié)構(gòu)和管理 ***
(3) SQL的基礎(chǔ)應(yīng)用和元數(shù)據(jù)獲取 Select ***
(4) 索引和執(zhí)行計(jì)劃管理 ****
(5) 存儲(chǔ)引擎 ***
(6) 日志管理 ****
(7) 備份恢復(fù)和遷移 ******
(8) 主從復(fù)制 *****
(9) 高可用和讀寫分離 ****
(10) 分布式架構(gòu) **
(11) 全面優(yōu)化 **
(12) NoSQL-Redis ****
(13) NoSQL-MongoDB **
(14) ES ----> ELK *****

第一章 MySQL 介紹和安裝

什么是數(shù)據(jù)?

我們認(rèn)知的數(shù)據(jù): 圖片,視頻,文字,表格,音頻,數(shù)字,符號(hào)
在計(jì)算機(jī)中數(shù)據(jù): 2進(jìn)制,16進(jìn)制

DBMS 數(shù)據(jù)庫(kù)管理系統(tǒng)
RDBMS 關(guān)系型數(shù)據(jù)庫(kù)
NoSQL 非關(guān)系型數(shù)據(jù)庫(kù)
NewSQL 分布式(云)數(shù)據(jù)庫(kù)架構(gòu)

RDBMS: 關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)
比較適合于,安全級(jí)別要求高的數(shù)據(jù)以及關(guān)系較復(fù)雜的數(shù)據(jù)

NoSQL:非關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)
適合于高性能存取數(shù)據(jù),一般是配合RDBMS進(jìn)行使用的
針對(duì)大數(shù)據(jù)處理分析,分布式架構(gòu)更加擅長(zhǎng)

https://db-engines.com/en/ranking

筆試: 列舉你熟悉的數(shù)據(jù)庫(kù)產(chǎn)品?

數(shù)據(jù)庫(kù)類型 數(shù)據(jù)庫(kù)名稱
RDBMS Oracle MySQL MSSQL PG DB2
NoSQL Redis MongoDB ES Memcahced HBASE
NewSQL TiDB PolarDB

面試: 你們公司都用了哪些數(shù)據(jù)庫(kù)產(chǎn)品

MySQL Redis MongoDB ES , 自學(xué) Oracle PG HBASE

MySQL 產(chǎn)品分支
MySQL 5.6 5.7 8.0
MariaDB 10.x
Percona 5.6 5.7 ....
MySQL 版本選擇

企業(yè)主流版本

大版本 小版本
5.6 5.6.34 5.6.36 5.6.38 5.6.40
5.7 5.7.18 5.7.20 5.7.22
8.0 8.0.14

1.一般選擇官方主流版本:5.6,5.7
2.GA(穩(wěn)定發(fā)布版)
3.6-12月的產(chǎn)品版本
===========================
5.6.38 5.7.20 20170913
你們公司用什么MySQL版本?
我們現(xiàn)在公司8014版本,你能勝任嗎?

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

MySQL 5.7.26 二進(jìn)制版本安裝

1 創(chuàng)建關(guān)鍵目錄

mkdir -p /data/ 

2 添加存儲(chǔ)磁盤,并掛載到/data ,設(shè)置自動(dòng)掛載

[root@db01 ~]# mkfs.xfs /dev/sdb
[root@db01 ~]# mount /dev/sdb /data
[root@db01 ~]# blkid /dev/sdb
/dev/sdb: UUID="85571a33-73e0-4f5e-af92-ec5bc8d510e8" TYPE="xfs" 

[root@db01 ~]# vim /etc/fstab 
UUID=85571a33-73e0-4f5e-af92-ec5bc8d510e8 /data                   xfs     defaults        0 0

3 創(chuàng)建數(shù)據(jù)目錄和日志目錄

[root@db01 ~]# mkdir -p /data/mysql/data   /data/binlog

4 上傳并處理軟件包

[root@db01 /usr/local]# tar xf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz 
[root@db01 /usr/local]# mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql

5 創(chuàng)建用戶并授權(quán)

[root@db01 /usr/local]# useradd mysql
[root@db01 /usr/local]# chown -R mysql. /data /usr/local/mysql

5.5.6 設(shè)置環(huán)境變量

vim /etc/profile 
export PATH=/usr/local/mysql/bin:$PATH

[root@db01 ~]# source /etc/profile

[root@db01 ~]# mysql -V
mysql  Ver 14.14 Distrib 5.7.26, for linux-glibc2.12 (x86_64) using  EditLine wrapper

7 數(shù)據(jù)初始化

[root@db01 ~]# rpm -qa |grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@db01 ~]# yum remove mariadb-libs -y
[root@db01 ~]# yum install -y libaio-devel 
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

--- 初始化參數(shù)介紹:
--initialize-insecure 初始化參數(shù)(不安全)
--initialize 初始化參數(shù)(安全)
(1) 生成隨機(jī)12位的初始密碼(大寫,小寫,數(shù)字,符號(hào))
(2) 要求所有密碼都具備復(fù)雜度要求
(3) 密碼過(guò)期時(shí)間180天

8 生成配置文件

[root@db01 ~]# vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=51
[mysql]
socket=/tmp/mysql.sock

9 準(zhǔn)備啟動(dòng)腳本
(1) sys-V啟動(dòng)方式:

[root@db01 ~]# cd /usr/local/mysql/support-files/
[root@db01 /usr/local/mysql/support-files]# cp mysql.server  /etc/init.d/mysqld 
[root@db01 ~]# service mysqld start     

(2) systemd管理

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=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

說(shuō)明:
先使用sysv關(guān)閉,在啟動(dòng)

[root@db01 ~]# /etc/init.d/mysqld stop
[root@db01 ~]# systemctl start mysqld

第一章小結(jié)

(1) 數(shù)據(jù)庫(kù)類型
RDBMS : Oracle MySQL MSSQL PG DB2
NoSQL : Redis MongoDB ES memcached Hbase
NewSQL : TiDB PolarDB
(2) MySQL的版本
5.6 34 36 38 40
5.7 18 20 22 24
8.0 14
GA 20170913
(3) MySQL 安裝方式
二進(jìn)制
源碼 : 二次開(kāi)發(fā) 定制化功能. ----> rpm
RPM : 官方, 定制
(4) 安裝
(1) 建目錄
(2) 建用戶
(3) 授權(quán)
(4) 初始化數(shù)據(jù): mysql_install_db(5.6) ,mysqld --initialize-insecure(5.7,8.0)
(5) 配置文件
(6) 啟動(dòng)腳本

第二章節(jié) 體系結(jié)構(gòu)及基礎(chǔ)管理

  1. C/S 工作模型
    TCP/IP
mysql -uroot -p123 -h 10.0.0.51 -P3306

Socket

mysql -uroot -p123 -S /tmp/mysql.sock   
  1. 實(shí)例
    公司: Boss + 總經(jīng)理 + 員工 + 辦公室
    實(shí)例: mysqld + master thread + workers線程 + 預(yù)分配的內(nèi)存
[root@db01 ~]# ps -ef |grep mysqld
[root@db01 ~]# top -H -p 3530
[root@db01 ~]# ps -T -p 3530
  1. 什么是SQL ?
    MySQL 管理和使用專用的命令 相當(dāng)于 Linux Bash Shell中自帶的命令
DDL 數(shù)據(jù)定義語(yǔ)言
DCL 數(shù)據(jù)控制語(yǔ)言
DML 數(shù)據(jù)操作語(yǔ)言
DQL 數(shù)據(jù)查詢語(yǔ)言

select user,host from mysql.user;

  1. mysqld 程序結(jié)構(gòu)(SQL執(zhí)行過(guò)程)
    4.1 連接層
組成 模塊
提供連接協(xié)議 TCP/IP
SOCKET
[root@db01 ~]# netstat -lnp|grep mysqld
驗(yàn)證模塊 驗(yàn)證用戶密碼
提供連接線程(show processlist;) 接收SQL
返回結(jié)果

4.2 SQL層

語(yǔ)法檢測(cè)模塊 檢查語(yǔ)法
SQL_MODE檢測(cè)模塊
語(yǔ)義檢查模塊,權(quán)限檢查
預(yù)處理 解析器: 解析樹: 執(zhí)行計(jì)劃
優(yōu)化器: 根據(jù)代價(jià),選擇一個(gè)代價(jià)最低的執(zhí)行計(jì)劃
代價(jià): IO CPU
執(zhí)行器 按照選出來(lái)的執(zhí)行計(jì)劃,執(zhí)行SQL語(yǔ)句,得出一個(gè)結(jié)果?(結(jié)果: 在磁盤的xxxxxx 位置之上,將結(jié)果交給存儲(chǔ)引擎層繼續(xù)處理)
query_cache redis 緩存數(shù)據(jù) Tair
記錄操作日志 binlog

4.3 存儲(chǔ)引擎層
相當(dāng)于Linux中的文件系統(tǒng).
根據(jù)SQL層給出的結(jié)果,去磁盤中將數(shù)據(jù)取出來(lái).取出16進(jìn)制的數(shù)據(jù),返回給SQL,結(jié)構(gòu)化成表,經(jīng)過(guò)連接層返回給用戶

5. MySQL 邏輯結(jié)構(gòu)

5.1

庫(kù)database(schema) 相當(dāng)于 Linux中的目錄
庫(kù)名 目錄名
屬性 目錄屬性

5.2

表 table 相當(dāng)于Linux中的文件
表名 文件名
表內(nèi)容(記錄,row) 文件內(nèi)容
表屬性 文件屬性

6. MySQL 物理結(jié)構(gòu)基礎(chǔ)引入

庫(kù) : 存儲(chǔ)到數(shù)據(jù)目錄下同名目錄
表 :
MyISAM 引擎 :

user.frm 列定義信息
user.MYD 數(shù)據(jù)行
user.MYI 索引

InnoDB 引擎 :

time_zone.frm 列定義信息
time_zone.ibd 數(shù)據(jù)行和索引

7. 頁(yè),區(qū),段 *****

頁(yè) 默認(rèn)16KB,是最小的IO單元
區(qū) 連續(xù)的64個(gè)默認(rèn)大小page,總共1M空間
一個(gè)表(非分區(qū)表)就是一個(gè)段,會(huì)有一個(gè)或多個(gè)區(qū)構(gòu)成
  1. 小結(jié)
    8.1 CS模型
    8.2 實(shí)例
    8.3 mysqld程序結(jié)構(gòu)
    8.4 邏輯結(jié)構(gòu)
    8.5 物理結(jié)構(gòu)
    8.6 段\區(qū)\頁(yè)

  2. 基礎(chǔ)管理
    9.1 用戶管理
    9.1.1 作用
    登錄MySQL
    管理MySQL對(duì)象

9.1.2 長(zhǎng)啥樣?
用戶名@'白名單'
白名單 :

    oldguo@'10.0.0.51'
    oldguo@'10.0.0.%'
    oldguo@'10.0.0.5%'
    oldguo@'10.0.0.0/255.255.254.0'
    oldguo@'%'

9.1.3 用戶的操作
創(chuàng)建用戶:

mysql> create user oldguo@'10.0.0.%';

查看用戶:

mysql> select user,host from mysql.user;

修改用戶:

mysql> alter user oldguo@'10.0.0.%' identified by '123';

刪除用戶:

drop user  oldguo@'10.0.0.%';

說(shuō)明:
8.0 以前可以用以下命令授權(quán)并建用戶
grant all on . to wordpress@'%' identified by '1322';
9.2 權(quán)限管理
9.2.1 語(yǔ)法介紹

grant  all    on *.* to wordpress@'%' identified by '1322';
GRANT 權(quán)限    ON  范圍   TO  用戶   IDENTIFIED BY   密碼 ;

(1) 權(quán)限 :
ALL:
SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, 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

Mysql 數(shù)據(jù)庫(kù)層面(db表)權(quán)限

權(quán)限 說(shuō)明
SELECT 查詢
INSERT 插入
UPDATE 更新
DELETE 刪除
CREATE 創(chuàng)建表或者索引
DROP 刪除庫(kù)濒生、表
GRANT 賦予權(quán)限選項(xiàng)
INDEX 索引
ALTER 更改表
CREATE_TMP_TABLE 創(chuàng)建臨時(shí)表
LOCK_TABLES 鎖表
SHOW_VIEW 查看視圖
CREATE_VIEW 創(chuàng)建視圖
CREATE_ROUTION 創(chuàng)建存儲(chǔ)過(guò)程
ALTER_ROUTION 更改存儲(chǔ)過(guò)程
EXECUTE 執(zhí)行存儲(chǔ)過(guò)程
EVENT 創(chuàng)建時(shí)間調(diào)度器
TRIGGER 創(chuàng)建觸發(fā)器

with grant option;

(2) 范圍:

*.* -R /
wordpress.* -R /wordpress
wordpress.t1 -R /wordpress/t1

9.2.2 授權(quán)操作
(1) 授權(quán)管理員用戶admin,能夠通過(guò)10網(wǎng)段中所有地址管理數(shù)據(jù)庫(kù)
mysql> grant all on . to admin@'10.0.0.%' identified by '123';
(2) 授權(quán)一個(gè)應(yīng)用用戶app,可用通過(guò)10網(wǎng)段,連接并使用wordpress庫(kù)的數(shù)據(jù)
mysql> grant select,update,delete,insert on wordpress.* to app@'10.0.0.%' identified by '123';

注意:
1. 不要將公司內(nèi)容任何賬號(hào),給非本公司人員
2. 不要流程范圍外,授予非業(yè)務(wù)部門業(yè)務(wù)系統(tǒng)用戶密碼信息
3. 所有核心文檔在通過(guò)互聯(lián)傳輸時(shí),都要脫敏處理.
9.2.3 查看用戶權(quán)限
show grants for admin@'10.0.0.%';

9.2.4 回收權(quán)限
mysql> grant all on . to test@'10.0.0.%' identified by '123' with grant option;
mysql> revoke grant option on . from 'test'@'10.0.0.%';

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末商源,一起剝皮案震驚了整個(gè)濱河市淑蔚,隨后出現(xiàn)的幾起案子锈遥,更是在濱河造成了極大的恐慌,老刑警劉巖渗鬼,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件览露,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡譬胎,警方通過(guò)查閱死者的電腦和手機(jī)差牛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門命锄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人偏化,你說(shuō)我怎么就攤上這事脐恩。” “怎么了侦讨?”我有些...
    開(kāi)封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵驶冒,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我韵卤,道長(zhǎng)骗污,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任沈条,我火速辦了婚禮需忿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜡歹。我一直安慰自己屋厘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布月而。 她就那樣靜靜地躺著汗洒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪父款。 梳的紋絲不亂的頭發(fā)上仲翎,一...
    開(kāi)封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音铛漓,去河邊找鬼。 笑死鲫构,一個(gè)胖子當(dāng)著我的面吹牛浓恶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播结笨,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼包晰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了炕吸?” 一聲冷哼從身側(cè)響起伐憾,我...
    開(kāi)封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赫模,沒(méi)想到半個(gè)月后树肃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瀑罗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年胸嘴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雏掠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劣像,死狀恐怖乡话,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耳奕,我是刑警寧澤绑青,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站屋群,受9級(jí)特大地震影響闸婴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谓晌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一掠拳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纸肉,春花似錦溺欧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至烦味,卻和暖如春聂使,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谬俄。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工柏靶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人溃论。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓屎蜓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親钥勋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子炬转,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1,MySQL權(quán)限體系 mysql 的權(quán)限體系大致分為5個(gè)層級(jí): 全局層級(jí): 全局權(quán)限適用于一個(gè)給定服務(wù)器中的所有...
    不排版閱讀 945評(píng)論 0 4
  • 什么是數(shù)據(jù)庫(kù)算灸? 數(shù)據(jù)庫(kù)是存儲(chǔ)數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序扼劈。每個(gè)數(shù)據(jù)庫(kù)具有一個(gè)或多個(gè)不同的API,用于創(chuàng)建菲驴,訪問(wèn)竞慢,管理...
    chen_000閱讀 4,035評(píng)論 0 19
  • 1.A simple master-to-slave replication is currently being...
    Kevin關(guān)大大閱讀 5,966評(píng)論 0 3
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí)题翰,會(huì)觸發(fā)此異常似踱。 O...
    我想起個(gè)好名字閱讀 5,307評(píng)論 0 9
  • 保安這個(gè)職業(yè)對(duì)于整個(gè)社會(huì)來(lái)說(shuō)是不可缺少的,它的存在有利于社會(huì)的穩(wěn)定和諧榨婆,保安保衛(wèi)著每個(gè)單位的財(cái)產(chǎn)安全和生命安全磁携。但...
    張德衛(wèi)zdw閱讀 2,028評(píng)論 2 2