DCL用户与授权

1、查看用户

use mysql;

select * from user;

// 一句话查询
select * from mysql.user;

2、创建用户

create user '用户名'@'地址' identified by '密码';

create user 'username'@'host' identified by 'password';

说明:

  • username:将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

示例:

//创建新用户,名为test,密码为123456,只允许本机登陆
create user 'test'@'localhost' identified by '123456';

//创建新用户,名为test,密码为123456,只允许192.168.1.1机器登陆
create user 'test'@'192.168.1.1' identified by '123456';

//创建新用户,名为test,密码为123456,可以从其他电脑远程登陆mysql所在服务器
create user 'test'@'%' identified by '123456';

//创建新用户,名为test,没有密码,可以从其他电脑远程登陆mysql所在服务器
create user 'test'@'%' ;

3、授权

grant privileges  on databasename.tablename to 'username'@'host';

grant all on *.* to 'test'@'localhost';

说明:

  • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
  • databasename:数据库名
  • tablename:表名
  • databasename.tablename:如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
  • ‘username’@’host’: 表示授权给哪个用户

示例:

//表示给用户test授权,让test能给test库中的user表实行select和insert
grant SELECT,INSERT on test.user to 'test'@'localhost';

//表示给用户test授权,让test能给所有库所有表实行所有的权力。
grant all on *.* to 'test'@'localhost';

注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

grant all on databasename.tablename to 'test'@'localhost' with grant option;

grant all on *.* to 'test'@'localhost' with grant option;

4、撤销用户权限

revoke privileges  on databasename.tablename from 'username'@'host';

revoke all on *.* from 'test'@'localhost';

注意:

//(1)若授予权利是这样写: 
grant  SELECT  on  *.*  to ‘test’@‘%’;
// 以下命令是不能撤销用户test 对 test.user 中的SELECT 权利的
revoke  SELECT on   test.user  from  ‘test’@‘%’;


//(2)反过来 授予权力
grant SELECT  on  test.user  to ‘test’@‘%’;
// 以下命令是不能用来撤销用户test 对test库的user表的SELECT 权利的
revoke SELECT on  *.*  from  ‘test’@‘%’;

5、删除用户

drop user 'username'@'host';

// 删除test用户
drop user 'test'@'localhost';

6、刷新权限

flush privileges;

7、设置于更改用户名和密码

set password for 'username'@'host' = password('newpassword');

// 如果是设置当前用户的密码:
set password = password('newpassword');

//示例
set password = password('123456');