目录

前言:

DCL介绍:

1.DCL管理用户:

1.查询用户:

图示:

2.创建用户

示例1:

运行结果:​

示例2:

运行结果:​

3.修改用户密码

示例:

运行结果:​

4.删除用户:

示例:

运行结果:​

2.DCL管理权限:

1.查询用户当前权限

示例:

运行结果:​

2.授予用户权限

示例:

3.撤销权限

示例:

运行结果:​

结束!


前言:

本篇将进行讲解SQL四大语句操作的最后一个:DCL操作,它在实际生活中占据比较关键的地位,因为其起到了管理数据库用户以及控制数据库的访问权限的功能,因此我们要掌握掌握好这个语句的各种用法。

DCL介绍:

DCL(Data Control Language)指的是对数据库的控制语言,主要用于数据库用户权限的控制、数据安全保护以及数据完整性的保证。

DCL语言包含三个关键字:

1. GRANT:用于给用户或用户组授予某些权限。

2. REVOKE:用于撤销用户或用户组的某些权限。

3. DENY:用于拒绝用户或用户组的权限。

GRANT语句用于授予用户或用户组的某些权限,例如SELECT、INSERT、UPDATE、DELETE等。REVOKE语句用于撤销授予的权限,将用户或用户组的权限还原到默认状态。DENY语句用于拒绝用户或用户组的权限,即使授予了某些权限,DENY语句也可以覆盖掉权限。

1.DCL管理用户:

1.查询用户:

  • 系统中的所有数据都是存储在名字为mysql这个数据库之中的user表的,因此我们先选中数据库mysql,再展示user表就可以查询所有的用户信息。
USE mysql;select *from user;

图示:

2.创建用户

CREAT USER '用户名'@'主机名' IDENTIFIED BY '密码';

示例1:

创建用户itcast,只能在当前主机localhost访问,密码是123456。

create user 'itcast'@'localhost' identified by '123456';

运行结果:

确实创建了一个名字叫做itcast的用户,我们可以尝试通过cmd登录该用户。

登录成功:

我们通过这个用户查询数据库有多少:

我们可以发现通过这个用户登陆上去之后,我们的数据库展示并不完全,这是由于我们初始设置的时候并没有给这个用户分配各项权限。

示例2:

创建用户bac,可以在任意主机上访问该数据库,密码是123456。

create user 'bac'@'%' identified by '123456';

运行结果:

确实创建了一个用户bac,密码是123456。这里我们没法再次进行测试,因为本人只有一个主机。

3.修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password by '新密码';

示例:

修改用户bac的访问密码为12345

ALTER USER 'bac'@'%' IDENTIFIED with mysql_native_password by'12345';

运行结果:

4.删除用户:

DROP USER '用户名'@'主机名';

示例:

删除bac用户

drop user 'bac'@'%';

运行结果:

2.DCL管理权限:

  • 多个权限之间,使用逗号分隔
  • 授权时,数据库名和表名可以使用*进行通配,代表所有权限。
权限说明权限说明
ALL,ALL PRIVIEGES所有权限SELECT查询数据
INSERT插入数据UPDATE修改数据
DELETE删除数据ALTER修改表
DROP删除数据库/表/视图CREATE创建数据库/表

1.查询用户当前权限

SHOW GRANTS FOR '用户名'@'主机名';

示例:

查询itcast用户当前具有的权限:

show grants for 'itcast'@'localhost';

运行结果:

这句话的意思是当前的itcast没有任何权限,仅仅能够登录上mysql服务器。

2.授予用户权限

GRANT 权限列表 ON 数据库名,表名 TO '用户名'@'主机名';

示例:

我们把test数据库的所有表的所有权限都授权给itcase

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

此时我们先不执行这个语句,从cmd中登录itcast用户查看能否访问到test这个数据库,可以发现此时是访问不到的,没有访问这个数据库的权限。

我们执行这条语句之后:

此时我们通过这个语句已经向itcast用户开放了操纵数据库tset的所有权限,我们简单的展示一下展示test中的所有表

可以成功访问。

3.撤销权限

REVOKE 权限列表 ON 数据库名,表名FROM'用户名'@'主机名';

示例:

撤销itcast的test数据库的所有权限

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

运行结果:

此时itcast关于test数据库的一切权限都被撤销。

结束!