DROP權限呢是刪除對象,擁有該權限的用戶可以刪除指定範圍內的對象(schema、表和視圖)。
不能刪除除這些對象之外的其他對象。
mysql> show grants for 'ut01'@'%';
+----------------------------------+
| Grants for ut01@% |
+----------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%' |
+----------------------------------+
1 row in set (0.00 sec)
mysql> grant drop on test1.* to 'ut01'@'%';
Query OK, 0 rows affected (0.06 sec)
mysql> show grants for 'ut01'@'%';
+---------------------------------------+
| Grants for ut01@% |
+---------------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%' |
| GRANT DROP ON `test1`.* TO 'ut01'@'%' |
+---------------------------------------+
2 rows in set (0.00 sec)
mysql> use test1;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table t1(id int,name char(10));
Query OK, 0 rows affected (0.32 sec)
mysql> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| t1 |
+-----------------+
1 row in set (0.00 sec)
mysql> create view v_t1 as select id,name from t1;
Query OK, 0 rows affected (0.11 sec)
mysql> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| t1 |
| v_t1 |
+-----------------+
2 rows in set (0.00 sec)
mysql>
而該用戶只能:
mysql> use test1;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| t1 |
+-----------------+
1 row in set (0.00 sec)
mysql> select * from t1;
ERROR 1142 (42000): SELECT command denied to user 'ut01'@'localhost' for table 't1'
mysql> desc t1;
ERROR 1142 (42000): SELECT command denied to user 'ut01'@'localhost' for table 't1'
mysql> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| t1 |
| v_t1 |
+-----------------+
2 rows in set (0.00 sec)
mysql> drop view v_t1;
Query OK, 0 rows affected (0.08 sec)
mysql> create view v_t1 as select id,name from t1;
ERROR 1142 (42000): CREATE VIEW command denied to user 'ut01'@'localhost' for table 'v_t1'
mysql> create database test2;
ERROR 1044 (42000): Access denied for user 'ut01'@'%' to database 'test2'
mysql>
只能刪除表和視圖。那麼能刪除test1這個schema嗎?
mysql> drop database test1;
Query OK, 0 rows affected (0.06 sec)
mysql> select database();
+------------+
| database() |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
mysql>
可見是可以刪除test1這個schema的。