当前位置: 首页 > article >正文

MYSQL-SQL-04-DCL(Data Control Language,数据控制语言)

DCL(数据控制语言)

  1. DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。

一、管理用户

1、查询用户

  • 在MySQL数据库管理系统中,mysql 是一个特殊的系统数据库名称,它并不是用户创建的普通数据库,而是MySQL安装时自动创建并包含一系列系统表和信息的数据库,它包含了MySQL服务器运行所需的系统表和元数据。
-- 这里的mysql是数据库名,是mysql自带的一个数据库名称,mysql下有一个user表,
-- user表存储了所有MySQL用户账户的信息,包括用户名、密码哈希、主机名、全局权限等
-- 但是不是所有用户都有权限查看这个user表的
select * from mysql.user;
  • 不是所有用户都有权限查看这个user表的,可以在root用户下执行该sql,root用户具有所有的权限。
    在这里插入图片描述
  • Host(主机名):指定了用户可以从哪个主机连接到 MySQL 服务器。
    • localhost 表示用户只能从本地机器连接。
    • 而 % 是一个通配符,表示用户可以从任何主机连接(这通常用于远程连接,但需要谨慎使用以避免安全风险)。
  • User(用户名):代表的是访问该数据库的用户名。在MySQL中需要通过Host和User来唯一标识一个用户。

2、创建用户

  • 语法:
 CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
  • 实例:
-- 创建用户dadao, 只能够在当前主机localhost访问, 密码123456;
create user 'dadao'@'localhost' identified by '123456';

-- 创建用户knife, 可以在任意主机访问该数据库, 密码123456;
create user 'knife'@'%' identified by '123456';

在这里插入图片描述
在这里插入图片描述

3、修改用户密码

  • 语法:
 ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;
  • 实例:
-- 修改用户dadao的访问密码为1234;
 alter user 'heima'@'%' identified with mysql_native_password by '1234';

  • 修改报错:
    在这里插入图片描述
  • 正确修改:

在这里插入图片描述

4、 删除用户

  • 语法:
 DROP USER '用户名'@'主机名' ;
  • 实例:
-- 删除 dadao@localhost 用户
 drop user 'dadao'@'localhost';

在这里插入图片描述

注意事项:

  • 在MySQL中需要通过'用户名'@'主机名'的方式,来唯一标识一个用户。
  • 主机名可以使用 % 通配。
  • 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用。

二、控制权限

  • mysql常用的权限(权限列表)
    在这里插入图片描述
  • 语法:
-- 查询权限
 SHOW GRANTS FOR '用户名'@'主机名' ;

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

-- 撤销权限
 REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
  1. 注意事项:
    • 多个权限之间,使用逗号分隔
    • 授权时, 数据库名和表名可以使用 * 进行通配,代表所有
  • 实例:
-- 查询 'knife'@'%' 用户的权限
 show grants for 'knife'@'%';
 
-- 授予 'knife'@'%' 用户company数据库所有表的所有操作权限
 grant all on company.* to 'knife'@'%';

-- 撤销 'knife'@'%' 用户的company数据库的所有权限
 revoke all on company.* from 'knife'@'%';

1、查询权限

  • 语法:
-- 查询权限
 SHOW GRANTS FOR '用户名'@'主机名' ;
  • 实例:
-- 查询 'knife'@'%' 用户的权限
 show grants for 'knife'@'%';
  • 查询用户knife的权限
    在这里插入图片描述

  • GRANT USAGE ON . TO ‘knife’@'%'解释:

    • GRANT 是授予权限的 SQL 命令。
    • USAGE 是被授予的权限类型。(USAGE 是一种非常基础的权限,它实际上并不授予用户对数据库进行任何操作的能力
    • ON . 表示这个权限适用于所有数据库(第一个 *)和所有表(第二个 *)。
    • TO ‘knife’@‘%’ 指定了权限被授予的用户,这里的用户是 knife,@‘%’ 表示该用户可以从任何主机连接到 MySQL 服务器。
  • root用户的权限
    在这里插入图片描述

2、授予权限

  • 语法:
-- 授予权限
 GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
  • 实例:
 
-- 授予 'knife'@'%' 用户company数据库所有表的所有操作权限
 grant all on company.* to 'knife'@'%';

  • 授予knife用户company所有表的所有权限
    在这里插入图片描述
  • 再次查看knife的权限
    在这里插入图片描述

3、撤销权限

  • 语法:
-- 撤销权限
 REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
  • 实例:
-- 撤销 'knife'@'%' 用户的company数据库的所有权限
 revoke all on company.* from 'knife'@'%';
  • 撤销knife对company数据额权限
    在这里插入图片描述
  • 再查看knife的权限
    在这里插入图片描述

http://www.kler.cn/news/363945.html

相关文章:

  • 《人工智能往事》—— 简而言之,AI 已经包围了我们。AI 就是我们。
  • 前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
  • Django学习- ORM基础操作_创建数据
  • 【功能安全】系统架构设计
  • 算法Day-9
  • 批量合并PDF 文件的 5 大解决方案
  • 若依框架vue3模板
  • 单例模式是一种常见的设计模式,确保一个类只有一个实例,并提供一个全局访问点。
  • Linux Redis查询key与移除日常操作
  • 尚硅谷redis 第97节 redisTmplate下答疑
  • 代码随想录算法训练营第二天| 209.长度最小的子数组 59.螺旋矩阵II 区间和 开发商购买土地
  • 身份证识别JAVA+OPENCV+OCR
  • ref属性的作用对象类型
  • 文件操作(1) —— 文件基础知识
  • 【C++】——list 容器的解析与极致实现
  • 修改IDEA中@author变量user内容
  • 开源软件搜索工具:Reddo
  • React是如何处理事件的?
  • linux 将已经启动的java应用的控制台日志输出出来, 不停应用的情况下
  • Java 使用 itextpdf 自定义 生成 pdf
  • CSS 网格布局
  • 前端发送请求格式
  • 2024昆明ICPC A. Two-star Contest(直观命名+详细注释)
  • SpringCloudAlibaba-Nacos
  • upload靶场sql靶场一点点见解
  • 【论文阅读】SRGAN