创建用户
①. 指定某一个用户使用某一个ip登录并指定密码
create user “用户名”@“192.168.111.19” identified by “密码”;
②. 指定某一个用户使用某一网段的ip登录
create user “用户名”@“192.168.111. %” identified by “密码”;
③. 指定某一个用户可以使用任何ip登录
create user “用户名”@"%" identified by “密码”;
删除用户
drop user “用户名”@“IP地址”;
修改用户
rename user “用户名”@“ip地址” to “新用户名”@“IP地址”;
修改密码
set password for “用户名”@“ip地址” = password(“新密码”);
修改权限
用户权限管理主要有以下作用:
-
可以限制用户访问哪些库、哪些表
-
可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作
-
可以限制用户登录的IP或域名
-
可以限制用户自己的权限是否可以授权给别的用户
show grants for '用户'@'IP地址' ;
【 查看权限】
grant 权限 on 数据库.表 to '用户'@'IP地址' identified by '密码';
【授权】
revoke 权限 on 数据库.表 from '用户'@'IP地址';
【取消权限】
显示授权
show grants;
。也可以指定显示:show grants for “用户”@“ip地址”;
。这个命令有一个妙用,就是复制粘贴查询结果,修改ip后执行,这样就为新ip克隆了一个授权。尤其是数据库有密码时很好用。
mysql> show grants;
库级授权和回收
mysql> grant all on *.* to 'user1'@'localhost' identified by '12345678';
让user1用户具有所有数据库的全部权限
•all :表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
•on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
•to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”root”@”192.168.111.%”,表示root这个用户只能在192.168.111IP段登录
•identified by:指定用户的登录密码
mysql> grant all on db1.* to 'user2'@'192.168.111.19' identified by 'passwd123';
让user2用户具有db1数据库的所有操作的权限
收回权限
mysql> revoke all on db1.* from 'user2'@'192.168.111.19';
表级授权和收回
mysql> grant SELECT,UPDATE,INSERT on db1.school to 'user3'@'192.168.111.129' identified by 'passwd123';
让user3用户具有db1数据库下school表的 SELECT,UPDATE,INSERT三个 操作的权限
收回权限
mysql> revoke SELECT,UPDATE,INSERT on db1.school from 'user3'@'192.168.111.129';
刷新权限
权限修改后需要执行以下命令来进行刷新
mysql> flush privileges;
可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限