往期專題請(qǐng)查看www.zhaibibei.cn
這是一個(gè)堅(jiān)持Oracle,Python,MySQL原創(chuàng)內(nèi)容的公眾號(hào)
這個(gè)專題主要講information_schema數(shù)據(jù)庫(kù)下的一些表
如無特殊說明數(shù)據(jù)庫(kù)版本為MySQL 5.7.26
該表顯示一些用戶具有的列權(quán)限信息,其來源為mysql.columns_priv系統(tǒng)表
有如下欄位
GRANTEE 權(quán)限授予的用戶的名稱,格式為'user_name'@'host_name'
TABLE_CATALOG 包含列的表所屬的目錄的名稱,該值總是def
TABLE_SCHEMA 包含列的表所屬的數(shù)據(jù)庫(kù)的名稱
TABLE_NAME 包含列的表名
COLUMN_NAME 列名
PRIVILEGE_TYPE 被授予的權(quán)限名稱,取值可以為任何可以在列級(jí)別上的權(quán)限
IS_GRANTABLE 如果為YES,代表該用戶擁有GRANT OPTION權(quán)限
接下來對(duì)上面的一些欄位做進(jìn)一步的介紹
我們可以為指定的表中的一個(gè)列賦予權(quán)限,可以一次性賦予多個(gè)列權(quán)限,如
GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'someuser'@'somehost';
這里我在測(cè)試環(huán)境中新加入一個(gè)權(quán)限
我們只賦予coltest用戶test數(shù)據(jù)庫(kù)中innodb_table兩個(gè)列的權(quán)限,其中只有name列用select權(quán)限
create database coltest;
grant all on coltest.* to 'coltest'@'%' identified by '123456' ;
flush privileges;
grant select (name),insert(name,age) on test.innodb_table to coltest@'%' ;
通過上面實(shí)驗(yàn)我們可以看出MySQL可以針對(duì)列做出權(quán)限管控,我們無法用coltest用戶對(duì)innodb_table 除name列外其他列進(jìn)行操作
SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES;
這里每個(gè)列的權(quán)限顯示一行
或者
SHOW grants for 'coltest'@'%';
這里所有列的權(quán)限顯示在一行
https://dev.mysql.com/doc/refman/5.7/en/column-privileges-table.html
聯(lián)系客服