Mysql權(quán)限系統(tǒng)

  • 權(quán)限系統(tǒng)的作用是授予來自某個主機(jī)的某個用戶可以查詢、插入、修改、刪除等數(shù)據(jù)庫操作的權(quán)限
  • 權(quán)限控制(授權(quán)與回收)的執(zhí)行語句包括create user, grant, revoke
  • 授權(quán)后的權(quán)限都會存放在MySQL的內(nèi)部數(shù)據(jù)庫中(數(shù)據(jù)庫名叫mysql),并在數(shù)據(jù)庫啟動之后把權(quán)限信息復(fù)制到內(nèi)存中
權(quán)限級別

權(quán)限存儲在mysql庫的user, db, tables_priv, columns_priv, and procs_priv這幾個系統(tǒng)表中,待MySQL實例啟動后就加載到內(nèi)存中

  • 3種權(quán)限級別
    1.全局性的管理權(quán)限,作用于整個MySQL實例級別
    2.數(shù)據(jù)庫級別的權(quán)限,作用于某個指定的數(shù)據(jù)庫上或者所有的數(shù)據(jù)庫上
    3.數(shù)據(jù)庫對象級別的權(quán)限,作用于指定的數(shù)據(jù)庫對象上(表、視圖等)或者所有的數(shù)據(jù)庫對象上
  • 查看用戶權(quán)限
# 查看mysql實例默認(rèn)root用戶的權(quán)限

mysql> show grants for root@localhost;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION       |
+---------------------------------------------------------------------+
#  比root用戶在幾個權(quán)限系統(tǒng)表中的數(shù)據(jù)

mysql> select * from user where user='root' and host='localhost';
輸出全是Y

mysql> select * from db where user='root' and host='localhost';
Empty set

mysql> select * from tables_priv where user='root' and host='localhost';
Empty set

mysql> select * from columns_priv where user='root' and host='localhost';
Empty set

mysql> select * from procs_priv where user='root' and host='localhost';
Empty set

ALL PRIVILEGES: 權(quán)限代表全局或者全數(shù)據(jù)庫對象級別的所有權(quán)限限配合。如果是rename表名,則要求有alter和drop原表,create和insert新表的權(quán)限
Alter routine權(quán)限代表允許修改或者刪除存儲過程、函數(shù)的權(quán)限
Create權(quán)限代表允許創(chuàng)建新的數(shù)據(jù)庫和表的權(quán)限
Create routine權(quán)限代表允許創(chuàng)建存儲過程、函數(shù)的權(quán)限
Create tablespace權(quán)限代表允許創(chuàng)建、修改、刪除表空間和日志組的權(quán)限
Create temporary tables權(quán)限代表允許創(chuàng)建臨時表的權(quán)限
Create user權(quán)限代表允許創(chuàng)建、修改、刪除、重命名user的權(quán)限
Create view權(quán)限代表允許創(chuàng)建視圖的權(quán)限
Delete權(quán)限代表允許刪除行數(shù)據(jù)的權(quán)限
Drop權(quán)限代表允許刪除數(shù)據(jù)庫、表、視圖的權(quán)限,包括truncate table命令
Event權(quán)限代表允許查詢,創(chuàng)建,修改,刪除MySQL事件
Execute權(quán)限代表允許執(zhí)行存儲過程和函數(shù)的權(quán)限
File權(quán)限代表允許在MySQL可以訪問的目錄進(jìn)行讀寫磁盤文件操作,可使用的命令包括load data infile,select … into outfile,load file()函數(shù)
Grant option權(quán)限代表是否允許此用戶授權(quán)或者收回給其他用戶你給予的權(quán)限
Index權(quán)限代表是否允許創(chuàng)建和刪除索引
Insert權(quán)限代表是否允許在表里插入數(shù)據(jù),同時在執(zhí)行analyze table,optimize
table,repair table語句的時候也需要insert權(quán)限
Lock權(quán)限代表允許對擁有select權(quán)限的表進(jìn)行鎖定,以防止其他鏈接對此表 的讀或?qū)?br> mysqladmin processlist, show engine等命令
? Reference權(quán)限是在5.7.6版本之后引入,代表是否允許創(chuàng)建外鍵
? Reload權(quán)限代表允許執(zhí)行flush命令,指明重新加載權(quán)限表到系統(tǒng)內(nèi)存中,refresh命令代表關(guān)閉和重新開啟日志文件并刷新所有的表
? Replication client權(quán)限代表允許執(zhí)行show master status,showslave status,showbinary logs命令
? Replication slave權(quán)限代表允許slave主機(jī)通過此用戶連接master以便建立主從復(fù)制關(guān)系
? Select權(quán)限代表允許從表中查看數(shù)據(jù),某些不查詢表數(shù)據(jù)的select執(zhí)行則不需要此權(quán)限,如Select 1+1,Select PI()+2;而且select權(quán)限在執(zhí)行update/delete語句中含有where條件的情況下也是需要的
? Show databases權(quán)限代表通過執(zhí)行show databases命令查看所有的數(shù)據(jù)庫名
? Show view權(quán)限代表通過執(zhí)行show create view命令查看視圖創(chuàng)建的語句Shutdown權(quán)限代表允許關(guān)閉數(shù)據(jù)庫實例,執(zhí)行語句包括mysqladminshutdown
? Super權(quán)限代表允許執(zhí)行一系列數(shù)據(jù)庫管理命令,包括kill強(qiáng)制關(guān)閉某個連接命令,change master to創(chuàng)建復(fù)制關(guān)系命令,以及create/alter/drop server等命令
? Trigger權(quán)限代表允許創(chuàng)建,刪除,執(zhí)行,顯示觸發(fā)器的權(quán)限
? Update權(quán)限代表允許修改表中的數(shù)據(jù)的權(quán)限
? Usage權(quán)限是創(chuàng)建一個用戶之后的默認(rèn)權(quán)限,其本身代表連接登錄權(quán)限

mysql> create user t1@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for t1@localhost;
+----------------------------------------+
| Grants for t1@localhost                |
+----------------------------------------+
| GRANT USAGE ON *.* TO 't1'@'localhost' |
+----------------------------------------+
系統(tǒng)權(quán)限表

權(quán)限存儲在mysql庫的user,db, tables_priv, columns_priv, and procs_priv這幾個系統(tǒng)表中,待MySQL實例啟動后就加載到內(nèi)存中

  • User表
    存放用戶賬戶信息以及全局級別(所有數(shù)據(jù)庫)權(quán)限,決定了來自哪些主機(jī)的哪些用戶可以訪問數(shù)據(jù)庫實例,如果有全局權(quán)限則意味著對所有數(shù)據(jù)庫都有此權(quán)限
  • Db表
    存放數(shù)據(jù)庫級別的權(quán)限,決定了來自哪些主機(jī)的哪些用戶可以訪問此數(shù)據(jù)庫
  • Tables_priv表
    存放表級別的權(quán)限,決定了來自哪些主機(jī)的哪些用戶可以訪問數(shù)據(jù)庫的這個表
  • Columns_priv表
    存放列級別的權(quán)限,決定了來自哪些主機(jī)的哪些用戶可以訪問數(shù)據(jù)庫表的這個字段
  • Procs_priv表
    存放存儲過程和函數(shù)級別的權(quán)限
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1,MySQL權(quán)限體系 mysql 的權(quán)限體系大致分為5個層級: 全局層級: 全局權(quán)限適用于一個給定服務(wù)器中的所有...
    不排版閱讀 1,009評論 0 4
  • 用了mysql好多年,很少關(guān)注mysql自帶庫,自然也不知道這個庫里存放些什么,在看《MySQL排錯指南》時看到它...
    灼灼2015閱讀 1,986評論 1 3
  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲數(shù)據(jù)的集合的單獨的應(yīng)用程序。每個數(shù)據(jù)庫具有一個或多個不同的API,用于創(chuàng)建,訪問,管理...
    chen_000閱讀 4,144評論 0 19
  • 簡介MySQL 的權(quán)限系統(tǒng)在實現(xiàn)上比較簡單,相關(guān)權(quán)限信息主要存儲在幾個被稱為 grant tables 的系統(tǒng)表中...
    舍是境界閱讀 582評論 0 0
  • 1.A simple master-to-slave replication is currently being...
    Kevin關(guān)大大閱讀 6,253評論 0 3

友情鏈接更多精彩內(nèi)容