更新時(shí)間:2021-01-15 17:29:16 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1321次
說到MySQL權(quán)限管理,我們先要明確權(quán)限管理的概念:權(quán)限管理,一般指根據(jù)系統(tǒng)設(shè)置的安全規(guī)則或者安全策略,用戶可以訪問而且只能訪問自己被授權(quán)的資源,不多不少。權(quán)限管理幾乎出現(xiàn)在任何系統(tǒng)里面,只要有用戶和密碼的系統(tǒng)。
賬戶權(quán)限信息被存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)的幾張權(quán)限表中,在MySQL啟動(dòng)時(shí),服務(wù)器將這些數(shù)據(jù)庫(kù)表中權(quán)限信息的內(nèi)容讀入內(nèi)存。其中GRANT和REVOKE語句所涉及的常用權(quán)限大致如下這些:CREATE、DROP、SELECT、INSERT、UPDATE、DELETE、INDEX、ALTER、CREATE、ROUTINE、FILE等,還有一個(gè)特殊的proxy權(quán)限,是用來賦予某個(gè)用戶具有給他人賦予權(quán)限的權(quán)限。下面我們來看看這些MySQL權(quán)限:
1. grant 所有權(quán)限
mysql> grant all privileges on *.* to 'USERNAME'@'HOST';
mysql> flush privileges;
2. grant super權(quán)限在*.*上(super權(quán)限可以對(duì)全局變量更改);
mysql> grant super on *.* to 'USERNAME'@'HOST';
mysql> flush privileges;
3. grant某個(gè)庫(kù)下所有表的所有權(quán)限
mysql> grant all privileges on DB_NAME.* to 'USERNAME'@'HOST';
mysql> flush privileges;
4. grant某個(gè)庫(kù)下所有表的select權(quán)限
mysql>grant select on DB_NAME.* to 'USERNAME'@'HOST';
mysql> flush privileges;
5. grant某個(gè)庫(kù)下某個(gè)表的insert權(quán)限
mysql> grant insert on DB_NAME.TABLE_NAME to 'USERNAME'@'HOST';
mysql> flush privileges;
6. grant某個(gè)庫(kù)下某個(gè)表的update權(quán)限
mysql>grant update on DB_NAME.TABLE_NAME to 'USERNAME'@'HOST';
mysql> flush privileges;
7. grant某個(gè)庫(kù)下某個(gè)表的某個(gè)字段update權(quán)限
mysql> grant update(COLUMN_NAME) on DB_NAME.TABLE_NAME to 'USERNAME'@'HOST';
mysql> flush privileges;
8.通過GRANT語句中的USAGE權(quán)限,可以創(chuàng)建賬戶而不授予任何權(quán)限
mysql> grant usage on *.* to 'USERNAME'@'HOST';
mysql> flush privileges;
9. grant創(chuàng)建、修改、刪除MySQL數(shù)據(jù)表結(jié)構(gòu)權(quán)限
mysql> grant create on testdb.* to developer@'192.168.0.%';
mysql> grant alter on testdb.* to developer@'192.168.0.%';
mysql> grant drop on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
10. grant操作MySQL外鍵權(quán)限
mysql> grant references on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
11. grant操作MySQL臨時(shí)表權(quán)限
mysql> grant create temporary tables on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
12. grant操作MySQL索引權(quán)限
mysql> grant index on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
13.grant操作MySQL視圖、查看視圖源代碼權(quán)限
mysql> grant create view on testdb.* to developer@'192.168.0.%';
mysql> grant show view on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
14. grant操作MySQL存儲(chǔ)過程、存儲(chǔ)函數(shù)權(quán)限
mysql> grant create routine on testdb.* to developer@'192.168.0.%';
mysql> grant alter routine on testdb.* to developer@'192.168.0.%';
mysql> grant execute on testdb.* to developer@'192.168.0.%';
mysql> flush privileges;
15.PROXY特殊權(quán)限如果想讓某個(gè)用戶具有給他人賦予權(quán)限的能力,那么就需要proxy權(quán)限了。當(dāng)你給一個(gè)用戶賦予all權(quán)限之后,你查看mysql.user表會(huì)發(fā)現(xiàn)Grant_priv字段還是為N,表示其沒有給他人賦予權(quán)限的權(quán)限。
我們可以查看一下系統(tǒng)默認(rèn)的超級(jí)管理員權(quán)限:
mysql> show grants for 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
可以看到其本身有PROXY權(quán)限,并且這個(gè)語句跟一般授權(quán)語句還不太一樣。所以如果想讓一個(gè)遠(yuǎn)程用戶有給他人賦予權(quán)限的能力,就需要給此用戶PROXY權(quán)限,如下:
mysql> grant all on *.* to 'test'@'%' identified by 'helloWORD';
mysql> GRANT PROXY ON ''@'' TO 'test'@'%' WITH GRANT OPTION;
mysql> flush privileges;
16. 查看用戶的權(quán)限
Mysql> show grants for 'USERNAME'@'HOST';
17. 移除用戶權(quán)限
# 移除tom用戶對(duì)于db.xsb的權(quán)限;
Mysql> revoke all on db.xsb from 'tom'@'localhost';
# 刷新授權(quán)表;
Mysql> flush privileges;
使用REVOKE收回權(quán)限之后,用戶帳戶的記錄將從db、host、tables_priv、columns_priv表中刪除,但是用戶帳號(hào)依然在user表中保存。
以上就是MySQL數(shù)據(jù)庫(kù)中的MySQL權(quán)限管理,實(shí)際上就是通過MySQL語句來實(shí)現(xiàn)的。合理使用MySQL權(quán)限管理對(duì)于MySQL數(shù)據(jù)庫(kù)的使用是至關(guān)重要的,也能夠加速我們對(duì)MySQL數(shù)據(jù)庫(kù)的熟練掌握,在本站的MySQL教程中,還有更多的詳細(xì)的解析,能夠幫助我們查漏補(bǔ)缺。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743