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

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.lryc.cn/news/470590.html

相关文章:

  • 多线程进阶——线程池的实现
  • C++网络编程之C/S模型
  • 目标检测:YOLOv11(Ultralytics)环境配置,适合0基础纯小白,超详细
  • 面试域——岗位职责以及工作流程
  • C#文件内容检索的功能
  • Redis-05 Redis发布订阅
  • 【读书笔记·VLSI电路设计方法解密】问题27:什么是可制造性设计
  • 数据结构:堆的应用
  • Spring Boot 实现文件分片上传和下载
  • 夹逼准则求数列极限(复习总结)
  • 【python】OpenCV—WaterShed Algorithm(1)
  • 查找与排序-插入排序
  • JAVA基础:多线程 (学习笔记)
  • 盲盒小程序/APP系统,市场发展下的新机遇
  • Unity3D LayoutGroup组件详解
  • [NeetCode 150] Foreign Dictionary
  • 小新学习K8s第一天之K8s基础概念
  • 如何用终端批量修改一个文件夹里面所有图片的后缀名?
  • 关于AI网络架构的文章
  • 【ChatGPT】在多轮对话中引导 ChatGPT 保持一致性
  • 【Chapter 7】因果推断中的机器学习:从T-学习器到双重稳健估计
  • vim的使用方法
  • OPPO携手比亚迪共同探索手机与汽车互融新时代
  • Apache Linkis:重新定义计算中间件
  • go gorm简单使用方法
  • 【c++高级篇】--多任务编程/多线程(Thread)
  • 【力扣专题栏】两数相加,如何实现存储在链表中的整数相加?
  • SOLID - 接口隔离原则(Interface Segregation Principle)
  • arrylist怎么让他变得不可修改
  • SpringMVC实战(3):拓展