MySQL 5.7許可權的介紹

feelpurple發表於2016-03-26
MySQL支援的許可權如下:

ALL或ALL PRIVILEGES 代表指定許可權等級的所有許可權。
ALTER 允許使用ALTER TABLE來改變表的結構,ALTER TABLE同時也需要CREATE和INSERT許可權。重新命名一個表需要對舊錶具有ALTER和DROP許可權,對新版具有CREATE和INSERT許可權。
ALTER ROUTINE 允許改變和刪除儲存過程和函式
CREATE 允許建立新的資料庫和表
CREATE ROUTINE 允許建立建立儲存過程和包
CREATE TABLESPACE 允許建立、更改和刪除表空間和日誌檔案組
CREATE TEMPORARY TABLES 允許建立臨時表
CREATE USER 允許更改、建立、刪除、重新命名使用者和收回所有許可權
CREATE VIEW 允許建立檢視
DELETE 允許從資料庫的表中刪除行
DROP 允許刪除資料庫、表和檢視
EVENT 允許在事件排程裡面建立、更改、刪除和檢視事件
EXECUETE 允許執行儲存過程和包
FILE 允許在伺服器的主機上透過LOAD DATA INFILE、SELECT ... INTO OUTFILE和LOAD_FILE()函式讀寫檔案
GRANT OPTION 允許向其他使用者授予或移除許可權
INDEX 允許建立和刪除索引
INSERT 允許向資料庫的表中插入行
LOCK TABLE 允許執行LOCK TABLES語句來鎖定表
PROCESS 允許顯示在伺服器上執行的執行緒資訊,即被會話所執行的語句資訊。這個許可權允許你執行SHOW PROCESSLIST和mysqladmin processlist命令來檢視執行緒,同時這個許可權也允許你執行SHOW ENGINE命令
PROXY 允許使用者冒充成為另外一個使用者
REFERENCES 允許建立外來鍵
RELOAD 允許使用FLUSH語句
REPLICATION CLIENT 允許執行SHOW MASTER STATUS,SHOW SLAVE STATUS和SHOW BINARY LOGS命令
REPLICATION SLAVE 允許SLAVE伺服器連線到當前伺服器來作為他們的主伺服器
SELECT 允許從資料庫中查詢表
SHOW DATABASES 允許賬戶執行SHOW DATABASE語句來檢視資料庫。沒有這個許可權的賬戶只能看到他們具有許可權的資料庫。
SHOW VIEW 允許執行SHOW CREATE VIEW語句
SHUTDOWN 允許執行SHUTDOWN語句和mysqladmin shutdown已經mysql_shutdown() C API函式
SUPER 允許使用者執行CHANGE MASTER TO,KILL或mysqladmin kill命令來殺掉其他使用者的執行緒,允許執行PURGE BINARY LOGS命令,透過SET GLOBAL來設定系統引數,執行mysqladmin debug命令,開啟和關閉日誌,即使read_only引數開啟也可以執行update語句,開啟和關閉從伺服器上面的複製,允許在連線數達到max_connections的情況下連線到伺服器。
TRIGGER 允許操作觸發器
UPDATE 允許更新資料庫中的表
USAGE 代表沒有任何許可權

授予全域性許可權:

*.*代表所有資料庫的許可權

mysql> grant all on *.* to 'test'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> grant select, insert on *.* to 'test'@'%';
Query OK, 0 rows affected (0.00 sec)

授予指定資料庫的許可權:

mysql> grant all on test.* to 'test'@'localhost';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> grant select, insert on *.* to 'test'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> grant select, insert on test.* to 'test'@'%';
Query OK, 0 rows affected (0.00 sec)

授予指定表的許可權:

mysql> grant all on test.orders to 'jeffrey'@'localhost';
Query OK, 0 rows affected (0.13 sec)

mysql> grant select, insert on test.orders to 'jeffrey'@'localhost';
Query OK, 0 rows affected (0.07 sec)

授予指定欄位的許可權:

mysql> desc test.orders_1;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| order_date    | date        | YES  |     | NULL    |       |
| order_id      | int(11)     | YES  |     | NULL    |       |
| customer_name | varchar(15) | YES  |     | NULL    |       |
| product_id    | int(11)     | YES  |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> grant select(order_date), insert(order_id,customer_name) on test.orders_1 to 'jeffrey'@'localhost';
Query OK, 0 rows affected (0.01 sec)

[root@T400-kelong ~]# mysql -ujeffrey -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.10-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from orders_1;
ERROR 1142 (42000): SELECT command denied to user 'jeffrey'@'localhost' for table 'orders_1'

mysql> select order_date from orders_1;
+------------+
| order_date |
+------------+
| 2016-03-26 |
+------------+
1 row in set (0.00 sec)

授予儲存過程的許可權:

mysql> grant create routine on test.* to 'jeffrey'@'localhost';
Query OK, 0 rows affected (0.08 sec)

mysql> grant execute on procedure test.myproc to 'jeffrey'@'localhost';
Query OK, 0 rows affected (0.04 sec)

授予代理使用者許可權:

PROX許可權可以使一個使用者成為另外一個使用者的代理

mysql> grant proxy on 'jeffrey'@'localhost' to 'test'@'%';
Query OK, 0 rows affected (0.09 sec)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2064453/,如需轉載,請註明出處,否則將追究法律責任。

相關文章