增删改查用户授权

  • 授权

GRANT 权限 ON 数据库名.表名 TO '用户名'@'主机IP地址'

PS: 权限指SELECT , INSERT , UPDATE 等.如果要授予所有的权限,则使用all privileges;

如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.

操作完成之后,不会立即生效,要想立即生效,需输入 flush privileges,将数据读取到内存中,从而立即生效

授权目标数据库的各类方式:

数据库名.* 数据库中的所有
数据库名.表 指定数据库中的某张表
数据库名.存储过程 指定数据库中的存储过程
*.* 所有数据库

授权用户的各类方式:

用户名@IP地址 用户只能在改IP下才能访问
用户名@192.168.1.% 用户只能在改IP段下才能访问(通配符%表示任意)
用户名@% 用户可以再任意IP下访问(默认IP地址为%)

常见的例子:

grant all privileges on db1.tb1 TO '用户名'@'IP'
grant select on db1.* TO '用户名'@'IP'
grant select,insert on *.* TO '用户名'@'IP'
revoke select on db1.tb1 from '用户名'@'IP'
  • 创建用户同时授权

grant 权限 on 数据库名.表名 to 用户名@IP地址 identified by '密码';

flush privileges;

PS:必须执行flush privileges; 否则登录时提示:ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES ) 

  • 查看用户的授权

show grants for 用户名@IP地址;

PS:GRANT USAGE:mysql usage权限就是空权限,默认create user的权限,只能连库,啥也不能干

  • 取消用户权限

REVOKE 权限 ON 数据库名.表名 FROM '用户名'@'IP地址';

例子: REVOKE SELECT ON db1.* FROM '用户名'@'IP';

PS: 假如你在给用户'dog'@'localhost''授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'dog'@'localhost', 则在使用REVOKE SELECT ON *.* FROM 'dog'@'localhost';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'dog'@'localhost';则REVOKE SELECT ON test.user FROM 'dog'@'localhost';命令也不能撤销该用户对test数据库中user表的Select 权限.

具体信息可以用命令SHOW GRANTS FOR '用户名'@'IP'; 查看.

posted @ 2018-08-10 11:17  Dylan-du  阅读(1474)  评论(0)    收藏  举报