概述
权限控制
1. 查看给定用户的权限
命令为SHOW GRANTS FOR,如以下test_user为新增的用户,没有赋予数据库相关的访问权限,如下USAGE表示没有权限。
``` mysql> show grants for 'test_user'@'%'; +---------------------------------------+ | Grants for test_user@% | +---------------------------------------+ | GRANT USAGE ON *.* TO 'test_user'@'%' | +---------------------------------------+ 1 row in set (0.00 sec) ```
2. 添加对数据库,数据表的访问权限:
1.Global全局权限,即对所有数据库的所有表的所有字段都有效的权限:“ * .* ”,其中左边为数据库通配符,右边为数据表通配符。
mysql> GRANT SELECT,UPDATE,DELETE,INSERT ON *.* TO 'test_user'@'%'; Query OK, 0 rows affected (0.01 sec)
2.Database数据库权限,即针对指定数据库的所有数据表的所有字段有效的权限:如下为给test_user这个用户赋予对easy_web这个数据库所有表的ALTER权限。
mysql> GRANT ALTER ON easy_web.* TO 'test_user'@'%'; Query OK, 0 rows affected (0.00 sec)
3.Table数据表权限:即针对指定数据表的所有字段有效的权限:如下为给test_user在easy_web的t_user表的所有字段添加索引的权限。
mysql> GRANT INDEX ON easy_web.t_user TO 'test_user'@'%'; Query OK, 0 rows affected (0.00 sec)
4.Column数据列的权限:即只指定指定数据库的指定表的指定列的权限:如下为只给test_user在easy_web数据库的t_user表对id, name列的SELECT的权限,但是没有INSERT插入数据到这两个字段的权限。
mysql> GRANT SELECT(id,name) ON easy_web.t_user TO 'test_user'@'%'; Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON easy_web.* TO 'test_user'@'%'; Query OK, 0 rows affected (0.00 sec)
3. 删除权限
删除权限主要通过与GRANT相对的REVOKE来实现,即解除指定的权限,使用方法一般是将以上GRANT替换为REVOKE,将TO替换为FROM,如下为解除test_user对eas_web数据库所有表的操作权限:
mysql> REVOKE ALL ON easy_web.* FROM 'test_user'@'%'; Query OK, 0 rows affected (0.00 sec)
4. 刷新权限
使权限在线生效:由于MySQL服务器会将权限相关的数据加载到内存中,通常通过以上操作进行权限控制时是写到权限控制的数据库表对应的磁盘文件中,所以需要通过FLUSH PRIVILEGES命令来重新从磁盘读取一次数据到内存中来使权限生效。
mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
5. 删除用户
删除用户是通过DROP USER命令来实现,如下:
mysql> DROP USER 'test_user'@'%'; Query OK, 0 rows affected (0.01 sec)