什么是DCL?一分钟了解DCL数据控制的各种操作
一. 什么是DCL
数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权。由 GRANT 和 REVOKE 两个指令组成。
可能有小伙伴会说, 请说人话。健哥给各位总结下哈,DCL其实就是MySQL权限控制的一系列SQL语句。下面我们就一起来试一试DCL语句的各种操作吧。
创建用户
下面是创建一个MySQL新用户的语法。
CREATE USER 用户名@服务器域名 IDENTIFIED BY 密码
举个栗子:创建一个用户。
#创建一个 jiange 用户CREATE USER `jiange`@`%` IDENTIFIED BY '123';
授权
创建完用户后,下面健哥带各位小伙伴给这个用户赋予数据库表的访问权限。赋权后用这个账户登录,那么才可以访问赋予权限的表。
语法:GRANT ALL ON 数据库.表 TO 用户名;
举个栗子:用户授权。
#将test下的所有表的权限都赋给 jiangeGRANT ALL ON test.* TO `jiange`;
撤销权限
赋予用户权限后如果想撤销用户权限可以使用下面语法来进行权限的取消。
语法:REVOKE ALL ON 数据库.表名 FROM 用户名;
注意:撤销权限后,账户要重新连接客户端才会生效。
举个栗子:撤销用户权限。
#将 jiange 的 test 的权限撤销REVOKE ALL ON test.* FROM `jiange`;
删除用户
下面健哥最后介绍一种DCL语法就是当这个用户账户不需要的时候,可以利用下面的语法将用户删除掉。
语法:DROP USER 用户名;
举个栗子: 删除用户。
#删除用户 jiangeDROP USER `jiange`;
让权限生效
创建完新用户,以及授权的SQL语句执行完不生效怎么办?那么下面的语句就是让授权生效的语法。
语法:FLUSH PRIVILEGES;
但是我发现有时候不执行这个命令,授权语句执行之后,权限验证也是OK的,但是有时候发现不执行这个FLUSH PRIVILEGES命令,权限认证还不能通过。
那么到底什么情况下需要执行FLUSH PRIVILEGES?什么情况下不需要执行这个命令呢?
当我们不是通过create user、grant、revoke、drop命令来操作用户和权限,而是通过update语句直接去修改了mysql.user表中的数据的时候,此时我们需要执行FLUSH PRIVILEGES命令。
此时我们也应该知道FLUSH PRIVILEGES命令的作用了,它的作用就是清空MySQL内存中acl_users数组的数据内容,重新从mysql.user表中加载用户的权限信息。
而当我们直接修改了mysql.user表中的内容的时候,MySQL内存中的acl_users数据信息是没有被更新的,所以此时我们想让我们对mysql.user表的修改直接生效,就需要手动的去更新acl_users数组的信息,而这个更新内存权限信息的操作,也就是通过FLUSH PRIVILEGES命令来实现的。
猜你喜欢LIKE
相关推荐HOT
更多>>servlet底层原理是什么?
1、ServletAPI核心类与接口2、Servlet类处理请求的流程创建servlet类的步骤:创建一个命名为TestServlet继承javax.servlet.http.HttpServlet类详情>>
2023-05-30 10:41:22多线程的优势与劣势分别是什么?
多线程是指在同一个程序中,同时运行多个线程,每个线程都可以独立执行不同的任务,相互之间不会干扰。多线程的优势和劣势如下:优势:提高程序...详情>>
2023-05-30 10:32:12设计模式之生产者与消费者的代码实现
本文主要讲述生产者和消费者模式,文中会使用通俗易懂的案例,使你更好地学习本章知识点并理解原理,做到有道无术。什么是生产者和消费者模式生...详情>>
2023-05-30 10:25:46从零开始学Java之interface接口
一.接口简介简介Java中的接口(interface)类似于是一种特殊的抽象类,它也是众多抽象方法的集合。接口的定义方式、组成部分都与抽象类相似,却比...详情>>
2023-05-29 11:26:17热门推荐
如何进行mysql数据备份?
沸什么是servlet的生命周期?servlet请求处理流程是怎样的?
热servlet底层原理是什么?
热怎样编写java程序?
新多线程的优势与劣势分别是什么?
ssm框架的作用与原理是什么?
设计模式之生产者与消费者的代码实现
接口和抽象类有什么区别?4个方面对比
从零开始学Java之interface接口
从零开始学Java之Java中的内部类是怎么回事?
一分钟带你了解MySQL——基础与介绍
在java中,super关键字怎样使用
什么是事件流以及事件流的传播机制 ?
弹性盒有哪些属性是在父元素身上?