MySQL權限管理

mysql有5個級別的權限,分別是:
Clobal Level,Database Level,Table level,Column Level,Routine Level。

1,Clobal Level:它是針對整個mysql數據庫服務器的全局權限。對mysql裏的某個數據庫,或某個數據庫的某張表的權限。所有的權限信息都存在mysql.user表中。

全局權限的設置語句:

1
GRANT ALL ON *.* to 'root'@'localhost'

第一個*代表數據庫名,這裏是所有的數據庫,第二個*代表表名。
全局權限有ALTER ALTER ROUTINE CREATE ALL CREATE ROUTINE CREATE TEMPORARY TABLES CREATE USER CREATE VIEW DELETE All DROP All EXECUTE FILE All INTO FILE INDEX All INSERT All LOCK TABLES PROCESS All RELOAD All REPLICATION CLIENT SLAVE STATUS REPLICATION SLAVE SELECT SHOW DATABASES SHOW VIEW view SHUTDOWN SUPER UPDATE USAGE

2,Database Level: 數據庫級別的權限,通過databasename.* 設置權限。設置語句如下:

1
GRANT ALL ON databasename.* to 'root'@'localhost'

它會被global level的權限給覆蓋掉,如有兩條如下的權限設置語句:

1
2
GRANT SELECT on test.* to 'root'@'localhost';
REVOKE SELECT ON *.* FROM 'root'@'localhost';

'root'@'localhost'將不再對test擁有select權限。
數據庫權限有: CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHUTDOWN,SUPER USAGE

3,Table Level:表級別的權限能被全局權限和數據庫級別權限覆蓋

1
2
GRANT SELECT ON test.test to 'root'@'localhost';
SHOW GRANTS FOR 'root'@'localhost';

可以通過use選中某個數據庫,直接對table名設置權限

1
GRANT SELECT ON test to 'root'@'localhost';

表的權限有:ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT UPDATE

4,Column Level:表的某個列的權限。它會被前面三個權限給覆蓋掉

1
GRANT SELECT(id) ON test to 'root'@'localhost';

字段級別的權限有INSERT,SELECT ,UPDATE

5,Routine Level:是針對函數和存儲過程的權限,他會被1,2,3個權限給覆蓋掉。

1
GRANT EXECUTE ON test.p to'root'@'localhost';




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章