目录
🤔 前言:
🤔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数据库的一切权限都被撤销。