用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用户自己的权限是否可以授权给别的用户



  • 查看用户
  • 创建用户
  • 授权用户
  • 删除用户
  • 设置与更改用户密码
  • 撤销用户权限

1.查看用户



查看用户并没有直接的SQL语句,而是进入 mysql数据库的user表(这个mysql库和user表都是一开始就有的),直接用 select * from user,来查看有什么用户



use mysql;
select * from user;



mysql 连接权限 mysql 权限管理_mysql 连接权限



可以导出形成CSV文件进行查看:




mysql 连接权限 mysql 权限管理_mysql_02


如上图,列出数据库所有的用户及权限


用户详情的权限列表请参考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,没有密码,可以从其他电脑远程登陆


mysql 连接权限 mysql 权限管理_mysql_03

可见创建了用户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;