標籤:mysql
mysql有5個層級的許可權,分別是:
Clobal Level,Database Level,Table level,Column Level,Routine Level。
1,Clobal Level:它是針對整個mysql資料庫伺服器的全域許可權。對mysql裡的某個資料庫,或某個資料庫的某張表的許可權。所有的許可權資訊都存在mysql.user這張表中。
全域許可權的設定語句:
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.* 設定許可權。設定語句如下:
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許可權。
資料庫許可權有: CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHUTDOWN,SUPER USAGE
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';
mysql的權限等級