標籤:grant
Mysql 涉及使用者權限的語句有GRANT,REVOKE
通過Mysql內建的help文檔可以查看相應的文法:
GRANT
GRANT priv_type,...... ON [obj_type] priv_level TO user_specification [WITH with_option ...]
priv_type對應的有:
ALL | ALTER | ALTER ROUTINE | CREATE | CREATE ROUTINE | CREATE TEMPORARY TABLES | CREATE USER | CREATE VIEW | DELETE | DROP | EXECUTE | FILE | INDEX | INSERT | LOCK TABLES | PROCESS | REFERENCES | RELOAD | REPLICATION CLIENT | REPLICATION SLAVE | SELECT | SHOW DATABASES | SHOW VIEW | SHUTDOWN | SUPER | UPDATE | USAGE
許可權 |
意義 |
ALL [PRIVILEGES] |
設定除GRANT OPTION之外的所有簡單許可權 |
ALTER |
允許使用ALTER TABLE |
ALTER ROUTINE |
更改或取消已儲存的子程式 |
CREATE |
允許使用CREATE TABLE |
CREATE ROUTINE |
建立已儲存的子程式 |
CREATE TEMPORARY TABLES |
允許使用CREATE TEMPORARY TABLE |
CREATE USER |
允許使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。 |
CREATE VIEW |
允許使用CREATE VIEW |
DELETE |
允許使用DELETE |
DROP |
允許使用DROP TABLE |
EXECUTE |
允許使用者運行已儲存的子程式 |
FILE |
允許使用SELECT...INTO OUTFILE和LOAD DATA INFILE |
INDEX |
允許使用CREATE INDEX和DROP INDEX |
INSERT |
允許使用INSERT |
LOCK TABLES |
允許對您擁有SELECT許可權的表使用LOCK TABLES |
PROCESS |
允許使用SHOW FULL PROCESSLIST |
REFERENCES |
未被實施 |
RELOAD |
允許使用FLUSH |
REPLICATION CLIENT |
允許使用者詢問從屬伺服器或主伺服器的地址 |
REPLICATION SLAVE |
用於複製型從屬伺服器(從主伺服器中讀取二進位日誌事件) |
SELECT |
允許使用SELECT |
SHOW DATABASES |
SHOW DATABASES顯示所有資料庫 |
SHOW VIEW |
允許使用SHOW CREATE VIEW |
SHUTDOWN |
允許使用mysqladmin shutdown |
SUPER |
允許使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL語句,mysqladmin debug命令;允許您串連(一次),即使已達到max_connections。 |
UPDATE |
允許使用UPDATE |
USAGE |
“無許可權”的同義字 |
GRANT OPTION |
|
object_type對應的有:
TABLE | FUNCTION | PROCEDURE
priv_level對應的有:
* | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name
user_specification對應內容為:
[ IDENTIFIED BY [PASSWORD] ‘password‘ | IDENTIFIED WITH auth_plugin [AS ‘auth_string‘] ]
ssl_option對應的有:
SSL | X509 | CIPHER ‘cipher‘ | ISSUER ‘issuer‘ | SUBJECT ‘subject‘
with_option對應內容為:
GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count
舉例:
mysql> create database testdb;mysql> grant all privileges on testdb.* to [email protected]‘localhost‘ identified by ‘testdb‘;
mysql> create user [email protected]‘localhost‘ identified by ‘testdb‘;
通過上述方式,使用者被建立在mysql.user表中。
mysql> select host,user,authentication_string from mysql.user where user=‘test‘;
對於目前使用者授權情況可以通過以下語句查詢
mysql> show grants;mysql> show grants for [email protected]‘localhost‘;mysql> show grants for current_user;mysql> show grants for current_user();
REVOKE
REOVKE priv_type,...... ON [obj_type] priv_level FROM user_specification
舉例:
mysql> revoke all on testdb.* from [email protected]‘127.0.0.1’
刪除user表中定義的使用者
mysql> drop user ‘dbd‘@‘127.0.0.1‘;
本文出自 “LinuxOracle” 部落格,請務必保留此出處http://onlinekof2001.blog.51cto.com/3106724/1685454
Mysql使用者授權管理