基础—SQL—DCL(数据控制语言)之权限控制

一、引言

学习完上篇博客,我们创建了用户之后,发现用户可以登录上 mysql 但是基本上不能访问任何的数据库,只能访问一个系统库。原因就是:用户创建好了之后,并没有给用户分配权限。接下来就会去学习和讲解DCL当中如何控制权限。

(1)MySQL当中定义了很多种权限,但是常用的就以下的几种权限:

其它的权限大家可以去官方文档查看详细的说明。

二、DCL------权限控制

主要通过介绍一下三张操作。

1、查询权限
  • SHOW GRANTS FOR '用户名'@'主机名';

注意:

grant:授予、准许

2、授予权限
  • GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

注意:

1、如果我们要给所有的数据库、所有的表来赋予权限。就写 ' *.* '

3、撤销权限
  • REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注意:

revoke :撤销、废除。记住 ON 后面注意你要撤销的是哪一个数据库、哪一张表上的权限,然后从每一个用户的权限上面来撤销这个权限。后面加个关键字:FROM

三、案例

打开工具 DataGrip ,然后打开控制台。

(1)查询权限

FOR 后面指定的是你要查询的是哪一个用户的权限,比如我现在查询 heima用户。

sql 复制代码
SHOW GRANTS FOR 'heima'@'%';
(2)授予权限
sql 复制代码
GRANT ALL ON test.* TO 'heima'@'%';

执行查询权限

这个时候再去命令行检查一下。

(3)撤销查询
sql 复制代码
REVOKE ALL ON test.* FROM 'heima'@'%';

此时,打开命令行退出之前的操作。重新用用户 heima登录连接数据库查看。

这就是DCL关于权限控制的三种操作。

注意:

1、多个权限之间,使用逗号分隔。

2、授权时,数据库名和表名可以使用*进行通配,代表所有。例如:*.* :代表我们要给这个用户分配 所有数据库所有表的所有权限,这就类似于是一个超级管理员。

相关推荐
IvorySQL9 小时前
PostgreSQL 日报 | JOIN 与外键优化(8 月 9 日)
数据库·postgresql
ltl9 小时前
自治数据库十年回顾:Peloton、NoisePage、OtterTune 到云原生 auto-tuning
数据库
灯澜忆梦11 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
C++ 老炮儿的技术栈12 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
MC皮蛋侠客12 小时前
Redis 系列(一):全景与最小闭环——从 `SET` 命令到内存数据结构
数据结构·数据库·redis
zt1985q14 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
IvorySQL15 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
油丶酸萝卜别吃15 小时前
MySQL B+ 树查询全过程详解
数据库·mysql
leisoo809715 小时前
股票数据本地化存储实战:JSON、数据库与列式存储的方案对比
jvm·数据库·json
Exclusive_Cat15 小时前
MySQL回表机制解析与优化策略
数据库·sql