mysql的權限表有哪些

mysql的權限表有:1、user表,用來記錄允許連接到服務器的賬號信息,該表里啟用的所有權限都是全局級的,適用于所有數據庫;2、db表,存儲了用戶對某個數據庫的操作權限;3、tables_priv表,用來對單個表進行權限設置;4、columns_priv表,用來對單個數據列進行權限設置;5、procs_priv表,用于對存儲過程和存儲函數進行權限設置。

mysql的權限表有哪些

本教程操作環境:windows7系統、mysql8版本、Dell G3電腦。

在 MySQL 數據庫中,權限表有user 表、db 表、tables_priv 表、columns_priv 表和 procs_priv 表。

user權限表

user 表是 MySQL 中最重要的一個權限表,用來記錄允許連接到服務器的賬號信息。需要注意的是,在 user 表里啟用的所有權限都是全局級的,適用于所有數據庫。

user 表中的字段大致可以分為 4 類,分別是用戶列、權限列、安全列和資源控制列。

用戶列

用戶列存儲了用戶連接 MySQL 數據庫時需要輸入的信息。需要注意的是 MySQL 5.7 版本不再使用 Password 來作為密碼的字段,而改成了 authentication_string。

權限列

權限列的字段決定了用戶的權限,用來描述在全局范圍內允許對數據和數據庫進行的操作。

權限大致分為兩大類,分別是高級管理權限和普通權限:

  • 高級管理權限主要對數據庫進行管理,例如關閉服務的權限、超級權限和加載用戶等;

  • 普通權限主要操作數據庫,例如查詢權限、修改權限等。

user 表的權限列包括 select_priv、Insert_ priv 等以 priv 結尾的字段,這些字段值的數據類型enum,可取的值只有 Y 和 N:Y 表示該用戶有對應的權限,N 表示該用戶沒有對應的權限。從安全角度考慮,這些字段的默認值都為 N。

如果要修改權限,可以使用 GRANT 語句為用戶賦予一些權限,也可以通過 UPDATE 語句更新 user 表的方式來設置權限。

安全列

安全列主要用來判斷用戶是否能夠登錄成功,user 表中的安全列如下表所示:

user 表的安全列
字段名 字段類型 是否為空 默認值 說明
ssl_type enum(”,’ANY’,’X509′,’SPECIFIED’) NO ? 支持ssl標準加密安全字段
ssl_cipher blob NO ? 支持ssl標準加密安全字段
x509_issuer blob NO ? 支持x509標準字段
x509_subject blob NO ? 支持x509標準字段
plugin char(64) NO mysql_native_password 引入plugins以進行用戶連接時的密碼驗證,plugin創建外部/代理用戶
password_expired enum(‘N’,’Y’) NO N 密碼是否過期?(N 未過期,y 已過期)
password_last_changed timestamp YES ? 記錄密碼最近修改的時間
password_lifetime smallint(5) unsigned YES ? 設置密碼的有效時間,單位為天數
account_locked enum(‘N’,’Y’) NO N 用戶是否被鎖定(Y 鎖定,N 未鎖定)

注意:即使 password_expired 為“Y”,用戶也可以使用密碼登錄 MySQL,但是不允許做任何操作。

通常標準的發行版不支持 ssl,讀者可以使用 SHOW VARIABLES LIKE “have_openssl” 語句來查看是否具有 ssl 功能。如果 have_openssl 的值為 DISABLED,那么則不支持 ssl 加密功能。

資源控制列

資源控制列的字段用來限制用戶使用的資源,user 表中的資源控制列如表 4 所示。

user 表的資源控制列
字段名 字段類型 是否為空 默認值 說明
max_questions int(11) unsigned NO 0 規定每小時允許執行查詢的操作次數
max_updates int(11) unsigned NO 0 規定每小時允許執行更新的操作次數
max_connections int(11) unsigned NO 0 規定每小時允許執行的連接操作次數
max_user_connections int(11) unsigned NO 0 規定允許同時建立的連接次數

以上字段的默認值為 0,表示沒有限制。一個小時內用戶查詢或者連接數量超過資源控制限制,用戶將被鎖定,直到下一個小時才可以在此執行對應的操作。可以使用 GRANT 語句更新這些字段的值。

db表

db 表比較常用,是 MySQL 數據庫中非常重要的權限表,表中存儲了用戶對某個數據庫的操作權限。表中的字段大致可以分為兩類,分別是用戶列和權限列。

用戶列

db 表用戶列有 3 個字段,分別是 Host、User、Db,標識從某個主機連接某個用戶對某個數據庫的操作權限,這 3 個字段的組合構成了 db 表的主鍵。

db 表的用戶列如下表所示:

字段名 字段類型 是否為空 默認值 說明
Host char(60) NO 主機名
Db char(64) NO 數據庫名
User char(32) NO 用戶名

權限列

db 表中的權限列和 user 表中的權限列大致相同,只是user 表中的權限是針對所有數據庫的,而 db 表中的權限只針對指定的數據庫。如果希望用戶只對某個數據庫有操作權限,可以先將 user 表中對應的權限設置為 N,然后在 db 表中設置對應數據庫的操作權限。

tables_priv表和columns_priv表

tables_priv 表用來對單個表進行權限設置,columns_priv 表用來對單個數據列進行權限設置。tables_priv 表結構如下表所示:

字段名 字段類型 是否為空 默認值 說明
Host char(60) NO 主機
Db char(64) NO 數據庫名
User char(32) NO 用戶名
Table_name char(64) NO 表名
Grantor char(93) NO 修改該記錄的用戶
Timestamp timestamp NO CURRENT_TIMESTAMP 修改該記錄的時間
Table_priv set(‘Select’,’Insert’,’Update’,’delete’,’
Create’,’Drop’,’Grant’,’References’,
‘Index’,’Alter’,’Create View’,’Show view’,’Trigger’)
NO 表示對表的操作權限,包括 Select、Insert、Update、Delete、Create、Drop、Grant、References、Index 和 Alter 等
Column_priv set(‘Select’,’Insert’,’Update’,’References’) NO 表示對表中的列的操作權限,包括 Select、Insert、Update 和 References

columns_priv 表結構如下表所示:

字段名 字段類型 是否為空 默認值 說明
Host char(60) NO 主機
Db char(64) NO 數據庫名
User char(32) NO 用戶名
Table_name char(64) NO 表名
Column_name char(64) NO 數據列名稱,用來指定對哪些數據列具有操作權限
Timestamp timestamp NO CURRENT_TIMESTAMP 修改該記錄的時間
Column_priv set(‘Select’,’Insert’,’Update’,’References’) NO 表示對表中的列的操作權限,包括 Select、Insert、Update 和 References

procs_priv表

procs_priv 表可以對存儲過程和存儲函數進行權限設置,procs_priv 的表結構如表所示:

字段名 字段類型 是否為空 默認值 說明
Host char(60) NO 主機名
Db char(64) NO 數據庫名
User char(32) NO 用戶名
Routine_name char(64) NO 表示存儲過程或函數的名稱
Routine_type enum(‘function’,’PROCEDURE’) NO 表示存儲過程或函數的類型,Routine_type 字段有兩個值,分別是 FUNCTION 和 PROCEDURE。FUNCTION 表示這是一個函數;PROCEDURE 表示這是一個
存儲過程。
Grantor char(93) NO 插入或修改該記錄的用戶
Proc_priv set(‘Execute’,’Alter Routine’,’Grant’) NO 表示擁有的權限,包括 Execute、Alter Routine、Grant 3種
Timestamp timestamp NO CURRENT_TIMESTAMP 表示記錄更新時間

【相關推薦:mysql視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享