1,Clobal Level:它是針對整個mysql數據庫服務器的全局權限。對mysql裡的某個數據庫,或某個數據庫的某張表的權限。所有的權限信息都存在mysql.user這張表中。
全局權限的設置語句:
GRANT ALL ON *.* to 'root'@'localhost'第一個*代表數據庫名,這裡是所有的數據庫,第二個*代表表名。
2,Database Level: 數據庫級別的權限,通過databasename.* 設置權限。設置語句如下:
GRANT ALL ON databasename.* to 'root'@'localhost'它會被global level的權限給覆蓋掉,如有兩條如下的權限設置語句:
GRANT SELECT on test.* to 'root'@'localhost'; REVOKE SELECT ON *.* FROM 'root'@'localhost';'root'@'localhost'將不再對test擁有select權限。
3,Table Level:表級別的權限能被全局權限和數據庫級別權限覆蓋
GRANT SELECT ON test.test to 'root'@'localhost'; SHOW GRANTS FOR 'root'@'localhost';可以通過use選中某個數據庫,直接對table名設置權限
GRANT SELECT ON test to 'root'@'localhost';表的權限有:ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT UPDATE
4,Column Level:表的某個列的權限。它會被前面三個權限給覆蓋掉
GRANT SELECT(id) ON test to 'root'@'localhost';字段級別的權限有INSERT,SELECT ,UPDATE
5,Routine Level:是針對函數和存儲過程的權限,他會被1,2,3個權限給覆蓋掉。
GRANT EXECUTE ON test.p to'root'@'localhost';