mysql 最好的特性之一是直至复杂的权限系统。
操作命令:
GRANT 赋予权限
REVOKE 取消用户权限
mysql的权限分4个等级:全局、数据库、表、列
先举例说明,如何添加一个用户以及如何删除用户权限
GRANT all ON * TO 'username'@'192.168.2.2' IDENTIFIED BY '1234' WITH GRANT OPTION;
其中第一个* 代表所有权限,第二个*.*代表所有库中所有表,@后面的ip代表此ip下此用户名的权限, ‘1234’ 为这个用户的密码 ,如果你仅仅执行了以上命令,你利用这个用户只能在192.168.2.2 登录。WITH GRANT OPTION 代表允许此用户向别人授予自己所拥有的权限。
注:mysql中的用户名其实是有两部分组成的 User和Host,如果你在创建用户的时候没有指明@后面的内容,默认为% 代表任何host;你可以为一个User设置在不同Host下不同的权限甚至不同的密码。如果我执行了两条命令,一个指定了ip另一个没有指定ip( 直接用username或username@host),那我在指定的ip登录用户,选择的是哪个权限呢。根据实验它的匹配原则是:先进行指定ip匹配,如果没有会匹配是否存在%。
REVOKE ALL PRIVILEGES,GRANT FROM username@192.168.2.2;
删除上命令创建用户的所有权限。
下面列出GRANT以及REVOKE的完整形式
GRANT命令的完整形式是:
GRANT privileges [columns]
ON item
To user_name [IDENTIFIED BY 'password']
[REQUIRE ssl_options]
[WITH [GRANT OPTION | limit_options]
其中方括号中的部分是可选的
privileges: 逗号分开的权限,这些权限包括SELECT ,INSERT, UPDATE,DELETE,INDEX,ALTER,CREATE,DROP
columns: 逗号分开的列名,用于对某列的权限控制
item : 新权限作用的数据库或表,形式如db.table,
REQUIRE:是否必须加密套接字连接,
WITH [GRANT OPTION :是否允许权限管理(此用户使用grant的权利)
REVOKE命令的完整形式
REVODE privileges [(columns)]
ON item
FROM user_name;
如果grant命令用了 WITH GRANT OPTION 可以如下方式撤销
REVOKE ALL PRIVILEGES,GRANT FROM user_name;