用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用户自己的权限是否可以授权给别的用户
-
查看用户
-
创建用户
-
授权用户
-
删除用户
-
设置与更改用户密码
-
撤销用户权限
1.查看用户
查看用户并没有直接的SQL语句,而是进入 mysql数据库的user表(这个mysql库和user表都是一开始就有的),直接用 select * from user,来查看有什么用户
use mysql; select * from user;
可以导出形成CSV文件进行查看:
如上图,列出数据库所有的用户及权限
用户详情的权限列表请参考MySQL官网说明:
2.创建用户
CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
-
user_name:要创建用户的名字
-
host:表示要这个新创建的用户允许从哪台机登陆,如果只允许从本机登陆,则 填'localhost',如果允许从远程登陆,则填 '%'
-
password:新创建用户的登陆数据库密码,如果没密码可以不写。
例:
create user 'aaa' @ 'localhost' identified by '123456'; //表示创建的新用户,名为aaa,这个新用户密码为123456,只允许本机登陆 create user 'bbb' @ '%' identified by '123456'; //表示新创建的用户,名为bbb,这个用户密码为123456,可以从其他电脑远程登陆mysql所在服务器 create user 'ccc' @ '%'; //表示新创建的用户ccc,没有密码,可以从其他电脑远程登陆
可见创建了用户tom,通配符'%'表示可在远程登陆,无密码
3.授权用户
GRANT privileges on databasename.tablename to 'username'@'host';
-
privileges:表示要授予什么权力,例如可以有 select,insert,delete,update等,如果要授予全部权力,则填 ALL ;
-
databasename.tablename:表示用户的权限能用在哪个库的哪个表中,如果想要用户的权限很作用于所有的数据库所有的表,则填 *.*,*是一个通配符,表示全部。
-
'username'@'host':表示授权给哪个用户。
例:
grant select,insert on zje.zje to 'aaa'@'%'; //表示给用户aaa授权,让aaa能给zje库中的zje表 实行 insert 和 select。 grant all on *.* to 'aaa'@'%'; //表示给用户aaa授权,让aaa能给所有库所有表实行所有的权力。 //再看用户列表,可以发现权限都变成 Y了。
注意:用以上命令授权的用户不能给其他用户授权,如果想这个用户能够给其他用户授权,就要在后面加上with grant option ;比如:
grant all on *.* to 'aaa'@'%' with grant option;
4.删除用户
命令:drop user 'user_name'@'host'; 例: drop user 'tom'@'%'; //表示删除用户aaa;
5.设置与更改用户密码
set password for 'username'@'host' = password('newpassword'); 如果是设置当前用户的密码:set password = password('newpassword'); 如:set password = password('123456');
6.撤销用户权限
revoke privileges on database.tablename from 'username'@'host'; 例如:revoke select on *.* from 'zje'@'%';
7.用户重命名
rename user 'tom'@'%' to 'tomao'@'%';
8.刷新权限
flush privileges;