共計 3490 個字符,預計需要花費 9 分鐘才能閱讀完成。
這篇文章主要講解了“mysql 有 user 表嗎”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“mysql 有 user 表嗎”吧!
mysql 有 user 表。user 表是 MySQL 中的一個權限表,用來記錄允許連接到服務器的賬號信息;user 表中的字段大致可以分為 4 類,分別是用戶列、權限列、安全列和資源控制列。
本教程操作環境:windows7 系統、mysql5.7 版本、Dell G3 電腦。
mysql 有 user 表。
user 表是 MySQL 中最重要的一個權限表,用來記錄允許連接到服務器的賬號信息。需要注意的是,在 user 表里啟用的所有權限都是全局級的,適用于所有數據庫。
user 表中的字段大致可以分為 4 類,分別是用戶列、權限列、安全列和資源控制列,下面主要介紹這些字段的含義。
用戶列
用戶列存儲了用戶連接 MySQL 數據庫時需要輸入的信息。需要注意的是 MySQL 5.7 版本不再使用 Password 來作為密碼的字段,而改成了 authentication_string。
MySQL 5.7 版本的用戶列如表 1 所示。
表 1:user 表的用戶列字段名字段類型是否為空默認值說明 Hostchar(60)NO 無主機名 Userchar(32)NO 無用戶名 authentication_stringtextYES 無密碼
用戶登錄時,如果這 3 個字段同時匹配,MySQL 數據庫系統才會允許其登錄。創建新用戶時,也是設置這 3 個字段的值。修改用戶密碼時,實際就是修改 user 表的 authentication_string 字段的值。因此,這 3 個字段決定了用戶能否登錄。
權限列
權限列的字段決定了用戶的權限,用來描述在全局范圍內允許對數據和數據庫進行的操作。
權限大致分為兩大類,分別是高級管理權限和普通權限:
高級管理權限主要對數據庫進行管理,例如關閉服務的權限、超級權限和加載用戶等;
普通權限主要操作數據庫,例如查詢權限、修改權限等。
user 表的權限列包括 Select_priv、Insert_ priv 等以 priv 結尾的字段,這些字段值的數據類型為 ENUM,可取的值只有 Y 和 N:Y 表示該用戶有對應的權限,N 表示該用戶沒有對應的權限。從安全角度考慮,這些字段的默認值都為 N。
表 2:user 表的權限列字段名字段類型是否為空默認值說明 Select_privenum(N , Y)NON 是否可以通過 SELECT 命令查詢數據 Insert_privenum(N , Y)NON 是否可以通過 INSERT 命令插入數據 Update_privenum(N , Y)NON 是否可以通過 UPDATE 命令修改現有數據 Delete_privenum(N , Y)NON 是否可以通過 DELETE 命令刪除現有數據 Create_privenum(N , Y)NON 是否可以創建新的數據庫和表 Drop_privenum(N , Y)NON 是否可以刪除現有數據庫和表 Reload_privenum(N , Y)NON 是否可以執行刷新和重新加載 MySQL 所用的各種內部緩存的特定命令,包括日志、權限、主機、查詢和表 Shutdown_privenum(N , Y)NON 是否可以關閉 MySQL 服務器。將此權限提供給 root 賬戶之外的任何用戶時,都應當非常謹慎 Process_privenum(N , Y)NON 是否可以通過 SHOW PROCESSLIST 命令查看其他用戶的進程 File_privenum(N , Y)NON 是否可以執行 SELECT INTO OUTFILE 和 LOAD DATA INFILE 命令 Grant_privenum(N , Y)NON 是否可以將自己的權限再授予其他用戶 References_privenum(N , Y)NON 是否可以創建外鍵約束 Index_privenum(N , Y)NON 是否可以對索引進行增刪查 Alter_privenum(N , Y)NON 是否可以重命名和修改表結構 Show_db_privenum(N , Y)NON 是否可以查看服務器上所有數據庫的名字,包括用戶擁有足夠訪問權限的數據庫 Super_privenum(N , Y)NON 是否可以執行某些強大的管理功能,例如通過 KILL 命令刪除用戶進程;使用 SET GLOBAL 命令修改全局 MySQL 變量,執行關于復制和日志的各種命令。(超級權限)Create_tmp_table_privenum(N , Y)NON 是否可以創建臨時表 Lock_tables_privenum(N , Y)NON 是否可以使用 LOCK TABLES 命令阻止對表的訪問 / 修改 Execute_privenum(N , Y)NON 是否可以執行存儲過程 Repl_slave_privenum(N , Y)NON 是否可以讀取用于維護復制數據庫環境的二進制日志文件 Repl_client_privenum(N , Y)NON 是否可以確定復制從服務器和主服務器的位置 Create_view_privenum(N , Y)NON 是否可以創建視圖 Show_view_privenum(N , Y)NON 是否可以查看視圖 Create_routine_privenum(N , Y)NON 是否可以更改或放棄存儲過程和函數 Alter_routine_privenum(N , Y)NON 是否可以修改或刪除存儲函數及函數 Create_user_privenum(N , Y)NON 是否可以執行 CREATE USER 命令,這個命令用于創建新的 MySQL 賬戶 Event_privenum(N , Y)NON 是否可以創建、修改和刪除事件 Trigger_privenum(N , Y)NON 是否可以創建和刪除觸發器 Create_tablespace_privenum(N , Y)NON 是否可以創建表空間
如果要修改權限,可以使用 GRANT 語句為用戶賦予一些權限,也可以通過 UPDATE 語句更新 user 表的方式來設置權限。
安全列
安全列主要用來判斷用戶是否能夠登錄成功,user 表中的安全列如表 3 所示:
表 3:user 表的安全列字段名字段類型是否為空默認值說明 ssl_typeenum(, ANY , X509 , SPECIFIED)NO
支持 ssl 標準加密安全字段 ssl_cipherblobNO
支持 ssl 標準加密安全字段 x509_issuerblobNO
支持 x509 標準字段 x509_subjectblobNO
支持 x509 標準字段 pluginchar(64)NOmysql_native_password 引入 plugins 以進行用戶連接時的密碼驗證,plugin 創建外部 / 代理用戶 password_expiredenum(N , Y)NON 密碼是否過期 (N 未過期,y 已過期)password_last_changedtimestampYES
記錄密碼最近修改的時間 password_lifetimesmallint(5) unsignedYES
設置密碼的有效時間,單位為天數 account_lockedenum(N , Y)NON 用戶是否被鎖定(Y 鎖定,N 未鎖定)
注意:即使 password_expired 為“Y”,用戶也可以使用密碼登錄 MySQL,但是不允許做任何操作。
通常標準的發行版不支持 ssl,讀者可以使用 SHOW VARIABLES LIKE have_openssl 語句來查看是否具有 ssl 功能。如果 have_openssl 的值為 DISABLED,那么則不支持 ssl 加密功能。
資源控制列
資源控制列的字段用來限制用戶使用的資源,user 表中的資源控制列如表 4 所示。
表 4:user 表的資源控制列字段名字段類型是否為空默認值說明 max_questionsint(11) unsignedNO0 規定每小時允許執行查詢的操作次數 max_updatesint(11) unsignedNO0 規定每小時允許執行更新的操作次數 max_connectionsint(11) unsignedNO0 規定每小時允許執行的連接操作次數 max_user_connectionsint(11) unsignedNO0 規定允許同時建立的連接次數
以上字段的默認值為 0,表示沒有限制。一個小時內用戶查詢或者連接數量超過資源控制限制,用戶將被鎖定,直到下一個小時才可以在此執行對應的操作。可以使用 GRANT 語句更新這些字段的值。
感謝各位的閱讀,以上就是“mysql 有 user 表嗎”的內容了,經過本文的學習后,相信大家對 mysql 有 user 表嗎這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!