2019-04-04-day02-MySQL-第二章-體系結構及基礎管理

0.有感而發(fā)

0.1 關于學習的幾個階段
0.2 聽懂
0.3 面試能說明白
0.4 工作崗位上能干明白
0.5 變通和自主學習

1. 體系結構

1.1 C/S(客戶端/服務端)模型介紹

image.png

TCP/IP方式(遠程镜豹、本地):

mysql -uroot -poldboy123 -h 10.0.0.51 -P3306

Socket方式(僅本地):

mysql -uroot -poldboy123 -S /tmp/mysql.sock
image.png

1.2 實例介紹

實例=mysqld后臺守護進程+Master Thread +干活的Thread+預分配的內存

公司=老板+經理+員工+辦公室

1.3 mysqld程序運行原理

1.3.1 mysqld程序結構

image.png

1.3.2 一條SQL語句的執(zhí)行過程

1.3.2.1 連接層

(1)提供連接協議:TCP/IP 、SOCKET
(2)提供驗證:用戶郁季、密碼曼氛,IP叨粘,SOCKET
(3)提供專用連接線程:接收用戶SQL刀森,返回結果

通過以下語句可以查看到連接線程基本情況

mysql> show processlist;

1.3.2.2 SQL層 (重點)**

(1)接收上層傳送的SQL語句
(2)語法驗證模塊:驗證語句語法
(3)語義檢查:判斷SQL語句的類型
      DDL :數據定義語言
      DCL :數據控制語言
      DML :數據操作語言
      DQL:數據查詢語言
(4)權限檢查:用戶對庫表有沒有權限
(5)解析器:進行SQL的預處理撮奏,產生執(zhí)行計劃
(6)優(yōu)化器:根據解析器得出的多種執(zhí)行計劃,進行判斷弯菊,選擇最優(yōu)的執(zhí)行計劃        代價模型:資源(CPU IO MEM)的耗損評估性能好壞(7)執(zhí)行器:根據最優(yōu)執(zhí)行計劃,執(zhí)行SQL語句踱阿,產生執(zhí)行結果執(zhí)行結果:在磁盤的xxxx位置上
(8)提供查詢緩存(默認是沒開啟的)管钳,會使用redis tair替代查詢緩存功能
(9)提供日志記錄(日志管理章節(jié)):binlog,默認是沒開啟的软舌。1.3.2.3 存儲引擎層(類似于Linux中的文件系統(tǒng))負責根據SQL層執(zhí)行的結果才漆,從磁盤上拿數據。將16進制的磁盤數據佛点,交由SQL架構化成表醇滥,由連接層的專用線程返回給用戶。

1.4 邏輯結構

1.4.1 庫:

庫名超营,庫權限鸳玩,庫數據類型等

1.4.2 表(二維表)

列:字段
行:記錄

MySQL為了將來數據的準確、規(guī)范演闭、有意義不跟,對于傳統(tǒng)認知的二維表添加了更多的功能

表屬性:權限,存儲引擎米碰,字符集
列屬性:數據類型窝革、約束、其他屬性(默認值吕座,自增長虐译,注釋)

1.5 物理存儲結構引入

1.5.1 庫的物理存儲結構用文件系統(tǒng)的目錄來存儲

1.5.2 表的物理存儲結構

MyISAM(一種引擎)的表
user.frm:列的相關信息
user.MYD:數據行
user.MYI:索引信息
==========================
InnoDB(默認的存儲引擎)的表: 
time_zone.frm:存儲列相關信息
 time_zone.ibd:數據行+索引

1.5.3 表的段、區(qū)吴趴、頁(16k)(了解)

頁:最小的存儲單元
區(qū):1個或多個連續(xù)的頁
段:一個表就是一個段漆诽,包含一個或多個區(qū)

2. 基礎管理

2.1 用戶、權限管理

2.1.1 用戶

作用:登錄,管理數據庫對象
定義:用戶@'白名單'
白名單: 允許哪些IP能夠登錄數據庫
支持的方式

oldboy@'%'                     :所有地址
oldboy@'10.0.0.%'           :10.0.0.0/24 網段的地址
oldboy@'localhost'           :本地主機
oldboy@'10.0.0.5.%'       10.0.0.50~10.0.0.59
oldboy@'10.0.0.0/255.255.254.0'  :子網掩碼不是24位的管理

操作:
增:

mysql> create user oldboy@'10.0.0.%' identified by '123';

查:

mysql> select user ,host ,authentication_string from mysql.user

改:

mysql> alter user oldboy@'10.0.0.%' identified by '456';

刪:

mysql> drop user oldboy@'10.0.0.%';

2.1.2 權限介紹

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

ALL 以上所有權限拴泌,一般是普通管理員擁有的
with grant option:超級管理員才具備的魏身,給別的用戶授權的功能
應用用戶:SELECT,INSERT, UPDATE, DELETE
權限管理操作:grant 權限 on 對象 to 用戶 identified by '密碼';
需求例子:windows機器的navicat登錄到linux中的MySQL蚪腐,管理員用戶箭昵。

grant   all    on      對象     to     用戶      identified by      '密碼';

對象:

*.*                                 --->chmod 755 -R /                  ----》針對管理員oldboy.*                         chmod 755 -R /oldboy            ----->應用用戶oldboy.t1                         chmod 755 -R  /oldboy/t1
mysql> grant   all    on      *.*   to     root@'10.0.0.%'      identified by      '123';

需求:創(chuàng)建一個應用用戶app用戶回季,能從windows上登錄mysql家制,并能操作app庫。

mysql> grant select ,update,insert,delete on app.* to app@'10.0.0.%' identified by '123';

開發(fā)人員用戶授權流程:

1.權限
2.對誰操作
3.你從哪來
4.密碼要求提示:

"8.0在grant命令添加新特性建用戶和授權分開了grant 不再支持自動創(chuàng)建用戶了泡一,不支持改密碼授權之前颤殴,必須要提前創(chuàng)建用戶"
**查看授權:

mysql> show grants for  app@'10.0.0.%';

回收權限:

revoke  delete on app.*  from app@'10.0.0.%';

2.2 連接管理

2.2.1 自帶客戶端命令mysql

常用參數:

-u                   用戶
-p                   密碼
-h                   IP
-P                  端口
-S                  socket文件
-e                   免交互執(zhí)行命令
<                    導入SQL腳本

登錄方法一——遠程登錄:

[root@db01 ~]# mysql -uroot -p -h 10.0.0.51 -P3306
Enter password:

登錄方法一——遠程登錄:

mysql> select @@socket;
+-----------------+| @@socket  
 |+-----------------+| /tmp/mysql.sock |

[root@db01 ~]# mysql -uroot -p -S /tmp/mysql.sock
Enter password:
[root@db01 ~]# mysql -uroot -p -e "select user,host from mysql.user;
Enter password:
[root@db01 ~]#
[root@db01 ~]# mysql -uroot -p <world.sql
Enter password:
[root@db01 ~]

2.3 多種啟動方式介紹

image.png

提示:
以上多種方式鼻忠,都可以單獨啟動MySQL服務
mysqld_safe和mysqld一般是在臨時維護時使用涵但。
另外,從Centos 7系統(tǒng)開始帖蔓,支持systemd直接調用mysqld的方式進行啟動數據庫

2.4 初始化配置

2.4.1 初始化配置的方法

預編譯
配置文件
命令行

2.4.2 初始配置文件

初始化配置文件的默認讀取路徑

[root@db01 ~]# mysqld --help --verbose |grep my.cnf/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

初始化配置文件讀取順序

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

默認情況下矮瘟,MySQL啟動時,會依次讀取以上配置文件塑娇,如果有重復選項澈侠,會以最后一個文件設置的為準。但是埋酬,如果啟動時加入了--defaults-file=xxxx時哨啃,以上的所有文件都不會讀取

配置文件的書寫方式

[標簽]
配置項=xxxx
標簽類型:服務端、客戶端
服務器端標簽:[mysqld][mysqld_safe][server]
客戶端標簽:[mysql][mysqldump][client
]配置文件的示例展示:

[root@db01 ~]# cat /etc/my.cnf
[mysqld]
user=mysql
basedir=/data/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6port=3306
log_error=/data/mysql/mysql.log
[mysql]
ocket=/tmp/mysql.sockprompt=Master
 [\\d]>

2.5 多實例的應用

2.5.1

準備多個目錄

mkdir -p /data/330{7,8,9}/data

2.5.2 準備配置文件

vim /data/3307/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7

vim /data/3308/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8

vim /data/3309/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9

2.5.3 初始化三套數據

mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data --basedir=/data/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data --basedir=/data/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data --basedir=/data/mysql

2.5.4 systemd管理多實例

cd /etc/systemd/system
cp mysqld.service mysqld3307.service
cp mysqld.service mysqld3308.service
cp mysqld.service mysqld3309.service
vim mysqld3307.service
ExecStart=/data/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
vim mysqld3308.serviceExecStart=/data/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
vim mysqld3309.serviceExecStart=/data/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf

2.5.5 授權

chown -R mysql.mysql /data/*
2.5.6 啟動

systemctl start mysqld3307.service
systemctl start mysqld3308.service
systemctl start mysqld3309.service

2.5.7 驗證多實例

netstat -lnp|grep 330
image.png

mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"

image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末写妥,一起剝皮案震驚了整個濱河市拳球,隨后出現的幾起案子,更是在濱河造成了極大的恐慌耳标,老刑警劉巖醇坝,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異次坡,居然都是意外死亡呼猪,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門砸琅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宋距,“玉大人,你說我怎么就攤上這事症脂⊙枋辏” “怎么了淫僻?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長壶唤。 經常有香客問我雳灵,道長,這世上最難降的妖魔是什么闸盔? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任悯辙,我火速辦了婚禮,結果婚禮上迎吵,老公的妹妹穿的比我還像新娘躲撰。我一直安慰自己,他們只是感情好击费,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布拢蛋。 她就那樣靜靜地躺著,像睡著了一般蔫巩。 火紅的嫁衣襯著肌膚如雪谆棱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天批幌,我揣著相機與錄音础锐,去河邊找鬼。 笑死荧缘,一個胖子當著我的面吹牛,可吹牛的內容都是我干的拦宣。 我是一名探鬼主播截粗,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鸵隧!你這毒婦竟也來了绸罗?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤豆瘫,失蹤者是張志新(化名)和其女友劉穎珊蟀,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體外驱,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡育灸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了昵宇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磅崭。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓦哎,靈堂內的尸體忽然破棺而出砸喻,到底是詐尸還是另有隱情柔逼,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布割岛,位于F島的核電站愉适,受9級特大地震影響,放射性物質發(fā)生泄漏癣漆。R本人自食惡果不足惜维咸,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望扑媚。 院中可真熱鬧腰湾,春花似錦、人聲如沸疆股。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旬痹。三九已至附井,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間两残,已是汗流浹背永毅。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留人弓,地道東北人沼死。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像崔赌,于是被迫代替她去往敵國和親意蛀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內容

  • 0.有感而發(fā) 0.1 關于學習的幾個階段 0.2 聽懂 0.3 面試能說明白 0.4 工作崗位上能干明白 0.5 ...
    MySQL_oldguo閱讀 3,231評論 6 14
  • # 一健芭、框架概述 # 課程概述 1. laravel 4天(之前TP框架還是很大的區(qū)別)(國外框架) 2. 在線教...
    關進一閱讀 362評論 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5县钥? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 27,422評論 1 45
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,089評論 1 32
  • 身在異鄉(xiāng)為異客慈迈,他鄉(xiāng)遇故知若贮。有朋自遠方來,不亦說乎? 今天就來個不期而遇痒留,不見不散谴麦。 因為007,才有了這次的聚會...
    李子心誠閱讀 226評論 0 0