標籤:
我們使用DDL的"CREATE USER"語句建立使用者,新的SQL使用者不允許訪問屬於其他SQL使用者的表,也不能立即建立自己的表,它必須被授權。可以授與權限包括以下幾組:
1.列許可權:和表中的一個具體列相關
2.表許可權:和一個具體資料表中所有資料相關
3.資料庫許可權:和一個具體資料庫中所有資料表相關
4.使用者權限:和MySQL所有的資料庫相關
可以使用SHOW GRANTS命令查看目前使用者的許可權。
SHOW GRANTS;/顯示目前使用者許可權SHOW GRANTS FOR ‘pinnsvin‘@‘localhost‘;/顯示指定使用者權限SHOW GRANTS FOR CURRENT_USER();/顯示目前使用者許可權
1.GRANT授權語句
文法:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_specification [, user_specification] ... [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}] [WITH {GRANT OPTION | resource_option} ...]/代理GRANT PROXY ON user_specification TO user_specification [, user_specification] ... [WITH GRANT OPTION]/聯級授權,選了此項,該使用者有權將自己的許可權授予自己建立的子使用者/授權目標物件類型object_type: { TABLE | FUNCTION | PROCEDURE}/授權目標priv_level: { * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name}/授權使用者user_specification: user [ auth_option ]auth_option: { IDENTIFIED BY ‘auth_string‘ | IDENTIFIED BY PASSWORD ‘hash_string‘ | IDENTIFIED WITH auth_plugin | IDENTIFIED WITH auth_plugin AS ‘hash_string‘}/SSL設定ssl_option: { SSL | X509 | CIPHER ‘cipher‘ | ISSUER ‘issuer‘ | SUBJECT ‘subject‘}resource_option: { | MAX_QUERIES_PER_HOUR count /允許使用者每小時執行的查詢語句數量 | MAX_UPDATES_PER_HOUR count /允許使用者每小時執行更新語句數量 | MAX_CONNECTIONS_PER_HOUR count /允許使用者每小時串連的次數 | MAX_USER_CONNECTIONS count /允許使用者同時串連伺服器的數量}
執行個體:
/先要建立一個使用者,建立了一個名為jeffrey,登入主機為localhost,密碼為mypass的使用者CREATE USER ‘jeffrey‘@‘localhost‘ IDENTIFIED BY ‘mypass‘;/授予了使用者jeffrey@localhost對資料庫db1下所有資料表所有操作許可權GRANT ALL ON db1.* TO ‘jeffrey‘@‘localhost‘;/授予了使用者‘jeffrey‘@‘localhost‘對資料庫db2下invoice資料表的查詢許可權GRANT SELECT ON db2.invoice TO ‘jeffrey‘@‘localhost‘;/USAGE意指無許可權,使用者[email protected] 在一個小時內只有90次查詢許可權GRANT USAGE ON *.* TO ‘jeffrey‘@‘localhost‘ WITH MAX_QUERIES_PER_HOUR 90;
2.REVOKE撤銷授權語句
文法:
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] .../授權代理REVOKE PROXY ON user FROM user [, user] ...
執行個體:
/撤回了使用者jeffrey@localhost對資料庫db1下所有資料表所有操作許可權REVOKE ALL ON db1.* FROM ‘jeffrey‘@‘localhost‘;/撤回了使用者‘jeffrey‘@‘localhost‘對資料庫db2下invoice資料表的查詢許可權REVOKE SELECT ON db2.invoice FROM ‘jeffrey‘@‘localhost‘;
MySQL的資料控制語言DCL