MySQL数据库的权限表
文章目錄
- user 表
- db 表
- tables_priv 表
- columns_priv表
MySQL 數(shù)據(jù)庫中與權(quán)限相關(guān)的表:user、db、tables_priv、columns_priv。
user 表
mysql> select * from mysql.user\G *************************** 1. row ***************************Host: localhostUser: rootSelect_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: YReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: Y Create_tablespace_priv: Yssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: *6969E01196BECE74725D5CD9F8C58F1D7529C352password_expired: Npassword_last_changed: 2020-07-27 10:06:49password_lifetime: NULLaccount_locked: Nmysql.user 表列出可以連接服務(wù)器的用戶信息,并且存儲(chǔ)了用戶的全局權(quán)限信息。在 mysql.user 表啟用的任何權(quán)限均是全局權(quán)限,即適用于所有數(shù)據(jù)庫的所有表。
如上面的查詢結(jié)果所示,用戶 root@localhost 的 Select_priv 字段值為 Y,說明該用戶可以查詢?nèi)我鈹?shù)據(jù)庫的任意表。
當(dāng)你執(zhí)行下面的授權(quán)語句后,如果 user 表中不存在 test@% 用戶,那么就會(huì)往 user 表中插入一條記錄,如果存在則會(huì)將 Select_priv 字段的值設(shè)為 Y:
mysql> grant select on *.* to 'test'@'%';db 表
mysql> select * from mysql.db\G *************************** 1. row ***************************Host: %Db: testUser: Select_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YGrant_priv: NReferences_priv: YIndex_priv: YAlter_priv: Y Create_tmp_table_priv: YLock_tables_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: NExecute_priv: NEvent_priv: YTrigger_priv: Y *************************** 2. row ***************************Host: localhostDb: performance_schemaUser: mysql.sessionSelect_priv: YInsert_priv: NUpdate_priv: NDelete_priv: NCreate_priv: NDrop_priv: NGrant_priv: NReferences_priv: NIndex_priv: NAlter_priv: N Create_tmp_table_priv: NLock_tables_priv: NCreate_view_priv: NShow_view_priv: NCreate_routine_priv: NAlter_routine_priv: NExecute_priv: NEvent_priv: NTrigger_priv: Nmysql.db 表存儲(chǔ)用戶對(duì)數(shù)據(jù)庫的權(quán)限數(shù)據(jù)。這里開啟的權(quán)限適用于一個(gè)數(shù)據(jù)庫中的所有表。
我們看下上面查詢結(jié)果的第一條記錄可得知,任何用戶都可以訪問數(shù)據(jù)庫 test,因?yàn)?User 字段是空。但是用戶除了 Grant_priv、Alter_routine_priv、Execute_priv 沒有權(quán)限之外,其它權(quán)限都有。
我們?cè)倏聪律厦娌樵兘Y(jié)果的第二條記錄可得知,用戶 mysql.session@localhost 對(duì)數(shù)據(jù)庫 performance.schema 除了擁有 Select_priv 權(quán)限之外,其它權(quán)限都沒有。
當(dāng)你執(zhí)行下面的語句后,如果 mysql.db 表不存在用戶 test@% 對(duì)數(shù)據(jù)庫 test 的授權(quán)記錄,那么會(huì)往 mysql.db 表插入一條記錄;如果存在該用戶的授權(quán)記錄,則會(huì)將字段 Select_priv 的值設(shè)為 Y:
mysql> grant select on testdb.* to 'test'@'%';tables_priv 表
mysql> select * from tables_priv\G *************************** 1. row ***************************Host: localhostDb: sysUser: mysql.sysTable_name: sys_configGrantor: root@localhostTimestamp: 2020-07-27 10:06:49Table_priv: Select Column_priv: *************************** 3. row ***************************Host: 127.0.0.1Db: qydpwUser: lwxTable_name: tf_userGrantor: root@localhostTimestamp: 2021-10-07 13:16:11Table_priv: Select,Update Column_priv:tables_priv 表存儲(chǔ)著用戶對(duì)某個(gè)表的權(quán)限數(shù)據(jù),這里開啟的一個(gè)權(quán)限適用于一個(gè)表的所有列。
看上面的查詢結(jié)果的第一條記錄可得知,用戶 mysql.sys@localhost 對(duì)表 sys.sys_config 只有 Selec 權(quán)限;看上面查詢結(jié)果的第二條記錄可得知,用戶 lwx@127.0.0.1 對(duì)表 qydpw.tf_user 有 Select 和 Update 權(quán)限。
當(dāng)你執(zhí)行下面的語句后,如果表中沒有用戶對(duì)應(yīng)的記錄,則會(huì)往表中插入一條記錄;如果存在該用戶的記錄,則會(huì)往字段 Table_priv 存入一個(gè)值 Select:
mysql> grant select on testdb.student to 'test'@'%';columns_priv表
columns_priv 表指定列級(jí)權(quán)限。這張表保存著用戶對(duì)某個(gè)表的特定列的權(quán)限數(shù)據(jù)。這里指定的權(quán)限適用于一個(gè)表的特定列。
當(dāng)你執(zhí)行下面的語句:
mysql> grant select(advice_id,user_id) on qydpw.tf_advice to lwx@127.0.0.1;會(huì)往表 columns_priv 插入兩條記錄,表示用戶 lwx@127.0.0.1 對(duì)表的 advice_id、user_id 擁有 Select 權(quán)限:
mysql> select * from mysql.columns_priv; +-----------+-------+------+------------+-------------+---------------------+-------------+ | Host | Db | User | Table_name | Column_name | Timestamp | Column_priv | +-----------+-------+------+------------+-------------+---------------------+-------------+ | 127.0.0.1 | qydpw | lwx | tf_advice | advice_id | 0000-00-00 00:00:00 | Select | | 127.0.0.1 | qydpw | lwx | tf_advice | user_id | 0000-00-00 00:00:00 | Select | +-----------+-------+------+------------+-------------+---------------------+-------------+ 2 rows in set (0.00 sec)總結(jié)
以上是生活随笔為你收集整理的MySQL数据库的权限表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 扁豆卤的做法 扁豆卤怎么做
- 下一篇: 运动俱乐部是干什么的 俱乐部的简介