更新時間:2021-01-15 17:29:16 來源:動力節(jié)點(diǎn) 瀏覽1386次
說到MySQL權(quán)限管理,我們先要明確權(quán)限管理的概念:權(quán)限管理,一般指根據(jù)系統(tǒng)設(shè)置的安全規(guī)則或者安全策略,用戶可以訪問而且只能訪問自己被授權(quán)的資源,不多不少。權(quán)限管理幾乎出現(xiàn)在任何系統(tǒng)里面,只要有用戶和密碼的系統(tǒng)。
賬戶權(quán)限信息被存儲在MySQL數(shù)據(jù)庫的幾張權(quán)限表中,在MySQL啟動時,服務(wù)器將這些數(shù)據(jù)庫表中權(quán)限信息的內(nèi)容讀入內(nèi)存。其中GRANT和REVOKE語句所涉及的常用權(quán)限大致如下這些:CREATE、DROP、SELECT、INSERT、UPDATE、DELETE、INDEX、ALTER、CREATE、ROUTINE、FILE等,還有一個特殊的proxy權(quán)限,是用來賦予某個用戶具有給他人賦予權(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)限可以對全局變量更改);
mysql> grant super on *.* to 'USERNAME'@'HOST';
mysql> flush privileges;
3. grant某個庫下所有表的所有權(quán)限
mysql> grant all privileges on DB_NAME.* to 'USERNAME'@'HOST';
mysql> flush privileges;
4. grant某個庫下所有表的select權(quán)限
mysql>grant select on DB_NAME.* to 'USERNAME'@'HOST';
mysql> flush privileges;
5. grant某個庫下某個表的insert權(quán)限
mysql> grant insert on DB_NAME.TABLE_NAME to 'USERNAME'@'HOST';
mysql> flush privileges;
6. grant某個庫下某個表的update權(quán)限
mysql>grant update on DB_NAME.TABLE_NAME to 'USERNAME'@'HOST';
mysql> flush privileges;
7. grant某個庫下某個表的某個字段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臨時表權(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存儲過程、存儲函數(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)限如果想讓某個用戶具有給他人賦予權(quán)限的能力,那么就需要proxy權(quán)限了。當(dāng)你給一個用戶賦予all權(quán)限之后,你查看mysql.user表會發(fā)現(xiàn)Grant_priv字段還是為N,表示其沒有給他人賦予權(quán)限的權(quán)限。
我們可以查看一下系統(tǒng)默認(rèn)的超級管理員權(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)限,并且這個語句跟一般授權(quán)語句還不太一樣。所以如果想讓一個遠(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用戶對于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表中刪除,但是用戶帳號依然在user表中保存。
以上就是MySQL數(shù)據(jù)庫中的MySQL權(quán)限管理,實際上就是通過MySQL語句來實現(xiàn)的。合理使用MySQL權(quán)限管理對于MySQL數(shù)據(jù)庫的使用是至關(guān)重要的,也能夠加速我們對MySQL數(shù)據(jù)庫的熟練掌握,在本站的MySQL教程中,還有更多的詳細(xì)的解析,能夠幫助我們查漏補(bǔ)缺。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)
初級 202925
初級 203221
初級 202629
初級 203743