MySQL許可權系統

2021-06-28 06:19:38 字數 1375 閱讀 1285

mysql的許可權系統圍繞著兩個概念:

1:認證——確定使用者是否允許連線資料庫伺服器;

2:授權——確定使用者是否擁有足夠的許可權執行查詢請求等。

與許可權相關的表有user,db,host,tables_priv,columns_priv。每個表的字段都可分為兩類,一類為作用域字段,一類為許可權字段。作用域字段用來標識主機、使用者或者資料庫;而許可權欄位則用來確定對於給定主機、使用者或者資料庫來說,哪些動作是允許的。

可以用show createtable mysql.user;來檢視建立user表的語句。同樣也可以檢視其它表的建立語句。

user表在某種程度上是獨一無二的,因為它是唯一乙個在許可權請求的認證和授權階段都起作用的表。在認證階段,它只是負責為使用者授權訪問mysql伺服器,確定使用者每小時的最大連線數和最大併發數;在授權階段,user確定允許訪問伺服器的使用者是否被賦予了運算元據庫的全域性許可權,確定使用者每小時的最大查詢數和更新數。

一旦連線到了伺服器,乙個使用者可以使用兩種型別的請求:

管理請求(shutdown,reload,等)

資料庫相關的請求(insert,delete,等)

當使用者提交管理請求時,伺服器只需檢視user表,這是因為user表是唯一包含與管理工作有關的許可權的乙個表。然而,當使用者提交資料庫請求時,要檢視的表就要更多了。

進行許可權分配時,按照user,db,tables_priv,columns_priv的順序進行分配。即先檢查全域性許可權表user,如果user中對應的許可權為y,則此使用者對所有資料庫的許可權都為y,將不再檢查db,tables_priv,columns_priv;如果為n,則到db表中檢查此使用者對應的具體資料庫,並得到db中為y的許可權;如果db中為n,則檢查tables_priv中此資料庫對應的具體表,取得表中的許可權y,以此類推。

tables_priv和columns_priv表

萬用字元可以用於這兩個表的host欄位,但是不允許在db、table_name和column_name欄位使用萬用字元。

許可權欄位被宣告為set欄位。

tables_priv和columns_priv表只應當通過grant/revoke命令進行修改。通過insert命令向這兩個表插入資料會導致伺服器不穩定!

tables_priv表中的table_priv欄位可以允許下列命令:select、insert、update、delete、create、drop、grant、references、index和alter。

tables_priv表中的column_priv欄位允許下列命令:select、insert、update和references。

columns_priv表中的type欄位允許下列命令:select、insert、update和references。

參考文獻

mysql許可權系統

深入學習mysql授權表

mysql 系統許可權 MySQL 的許可權系統

create user liub localhost identified by liub create table g user id varchar 10 username varchar 20 userpwd varchar 20 insert into g user values 1 liu...

MySQL 許可權系統詳解

執行grant,revoke或者drop user命令來修改相關許可權,則不需要手工執行flush privileges命令,因為通過 grant,revoke或者drop user命令所做的許可權修改在修改系統表的同時也會更新記憶體結構中的許可權資訊。mysql 5.0.2 還增加了 create...

mysql展示系統配置許可權 mysql許可權設定

這篇文章主要介紹了在linux系統的命令列中為mysql建立使用者的方法,包括對所建使用者的許可權管理,需要的朋友可以參考下 要訪問乙個mysql伺服器,你需要使用乙個使用者帳號登入其中方可進行。每個mysql使用者帳號都有許多與之相關連的屬性,例如使用者名稱 密碼以及許可權和資源限制。許可權 定義...