用户管理
创建用户
create user '用户名'@'允许登陆的主机地址' identified by 密码;
#创建指定ip为192.168.1.1的lyn用户登录
create user 'lyn'@'192.168.1.1'identified by '123';
#创建指定ip为192.168.1开头的lyn用户登录
create user 'lyn'@'192.169.1.%' identified by '123';
#创建指定任何ip的lyn用户登录
create user 'lyn'@'%' identified by '123';
删除用户
drop user '用户名'@'允许登陆的主机地址';
修改用户名
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
修改密码
set password for '用户名'@'IP地址' = Password('新密码');
授权方式
新创建的用户默认情况下是什么权限都没有的。想要操作数据库,就必须进行授权。
查看权限
show grants for '用户'@'IP地址'
权限类别
- ALL 允许做任何事;
- USAGE 只允许登录。
上图中ALL
表示允许做任何事,而USAGE
则表示只允许登录,其他什么也做不了。
授予权限
grant 权限列表 ON 库.表 to 用户名@'ip' identified by '密码';
例子
#将所有数据库的所有权限授予给lyn这个用户,允许lyn用户在123.123.123.123这个IP进行远程登陆,并设置lyn用户的登录密码为123456。
grant all on *.* to lyn@'123.123.123.123' identified by '123456';
#将mysql_db数据库中的sys_user表的查询权限给qjh用户。
grant select on mysql_db.sys_user to qjh@'localhost' identified by password'123123';
#查看该用户的权限
show grants for qjh@'localhost';
注意:授权操作只能是root
用户来操作;grant给用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效;授权后一定要刷新权限,使权限立即生效:FLUSH PRIVILEGES
;
另外在使用grant给用户添加权限时,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个select
权限,后来又给用户添加了一个insert
权限,那么该用户就同时拥有了select
和insert
权限。
撤销权限
MySQL 同样也提供了撤销权限的方法 ——revoke
,revoke跟grant语法差不多,只需要把关键字to
换成from
即可,并且revoke语句中不需要跟密码设置,具体如下:
revoke 权限列表 on 库.表 from 用户名@'ip';
注意:
- 和grant一样,revoke用户权限后,该用户只有重新连接 MySQL数据库,权限才能生效。
- revoke可以回收所有权限,也可以回收部分权限,且授权只是收回权限,用户仍可以登录。
#将用户qjh@'localhost'在mysql_db数据库中对sys_user表的删除delete权限撤销。
revoke DELETE on mysql_db.sys_user from qjh@'localhost';
- 多条revoke收回权限和grant一样,也是会自动叠加,不会覆盖之前撤销权限操作。