INDEX权限,顾名思义就是在某个表上具有维护索引的权限。
mysql> drop user 'ut01'@'%';
Query OK, 0 rows affected (0.03 sec)
mysql> create user 'ut01'@'%';
Query OK, 0 rows affected (0.05 sec)
mysql> alter user 'ut01'@'%' identified by '20127163';
Query OK, 0 rows affected (0.05 sec)
mysql> show grants for 'ut01'@'%';
+----------------------------------+
| Grants for ut01@% |
+----------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%' |
+----------------------------------+
1 row in set (0.00 sec)
mysql> grant index on test.t_area to 'ut01'@'%';
Query OK, 0 rows affected (0.06 sec)
mysql> show grants for 'ut01'@'%';
+----------------------------------------------+
| Grants for ut01@% |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'ut01'@'%' |
| GRANT INDEX ON `test`.`t_area` TO 'ut01'@'%' |
+----------------------------------------------+
2 rows in set (0.00 sec)
mysql>
下面看看ut01@%的操作:
C:\Users\Administrator>mysql -uut01
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.7.11-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, 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
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t_area |
+----------------+
1 row in set (0.00 sec)
mysql> create index idx_t_area_name on t_area(name);
Query OK, 0 rows affected (0.44 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> drop index idx_t_area_name;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
mysql> drop index idx_t_area_name on t_area; #注意语法和oracle不同,意思就是mysql里面可以有索引名称相同的但是不在同一个表的索引存在
Query OK, 0 rows affected (0.18 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> ALTER TABLE `test`.`t_area`
-> ADD INDEX (`address`);
ERROR 1142 (42000): ALTER command denied to user 'ut01'@'localhost' for table 't_area'
mysql>
可见,获取index权限只能使用create和drop的方式管理索引。
而alter方式维护index是非权限内的操作。