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

MySQL——DCL

在MySQL中,DCL(Data Control Language)是数据控制语言的简称,主要用于控制数据库的访问权限和管理用户的权限。DCL命令是数据库管理中非常重要的一部分,主要用于定义和处理权限的分配,以确保数据库的安全性。

用户管理:

  • 查询用户

    USE mysql; SELECT * FROM user;

    这条命令先切换到 mysql 数据库(存储 MySQL 系统信息的数据库),然后查询 user 表来查看所有用户。

  • 创建用户

    CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

    使用这条命令创建一个新的用户,指定用户名、主机名(可以是 '%' 表示任何主机),并设置用户的密码。

  • 修改用户密码

    ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

    这条命令用于修改指定用户的密码,mysql_native_password 是一种身份验证插件。通过这种方式,可以为已有用户设置新的密码。

  • 删除用户

    DROP USER '用户名'@'主机名';

    使用 DROP USER 命令来删除指定的用户及其权限。

权限控制:

1. 查看权限

管理员可以通过以下命令来查看某个用户的权限:

  1. 查看用户的所有权限:

    SHOW GRANTS FOR 'user1'@'localhost';
  2. 查看当前登录用户的权限:

    SHOW GRANTS;

2. GRANT:授予权限

GRANT 命令用于授予用户特定权限,允许他们执行某些操作。权限可以细化到数据库级别、表级别,甚至列级别。常见的权限类型包括 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT OPTION 等。

基本语法
GRANT 权限列表 ON 数据库.表 TO '用户名'@'主机' [IDENTIFIED BY '密码'];
  • 权限列表:要授予的权限类型。可以是单个权限,如 SELECT,或多个权限,用逗号分隔。也可以使用 ALL 表示授予所有权限
  • 数据库.表:权限生效的对象,*.* 表示所有数据库和表。
  • 用户名:需要授予权限的用户。
  • 主机:用户可以从哪些主机访问数据库,'%' 表示任何主机。
示例
  1. 为用户授予对特定数据库的 SELECTINSERT 权限:

    GRANT SELECT, INSERT ON mydb.* TO 'user1'@'localhost';
  2. 为用户授予对所有数据库的所有权限:

    GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY 'password123';

3. REVOKE:撤销权限

REVOKE 命令用于撤销用户的特定权限。它与 GRANT 相对应,用于移除之前授予的权限。

基本语法
REVOKE 权限列表 ON 数据库.表 FROM '用户名'@'主机';
  • GRANT 语法类似,只不过作用是撤销指定权限。
示例
  1. 撤销用户对特定数据库的 INSERT 权限:

    REVOKE INSERT ON mydb.* FROM 'user1'@'localhost';
  2. 撤销用户对所有数据库的所有权限:

    REVOKE ALL PRIVILEGES ON *.* FROM 'user1'@'%';

权限表:

1. 全局级别权限

这些权限授予用户对所有数据库的访问和操作权限,通常用于数据库管理员。

  • ALL PRIVILEGES(all privileges):授予用户所有权限(通常与 *.* 一起使用)。
  • GRANT OPTION(grant option):允许用户将自己拥有的权限授予其他用户。
  • SUPER(super):允许执行管理员任务,比如终止其他用户的查询,修改全局变量。
  • FILE(file):允许用户在服务器上读写文件,常用于导入/导出数据。
  • PROCESS(process):允许查看和管理所有用户的线程和查询。
  • RELOAD(reload):允许执行刷新操作(如 FLUSH 命令),刷新权限或表。
  • SHUTDOWN(shutdown):允许关闭 MySQL 服务器。
  • REPLICATION SLAVE(replication slave):允许在复制中作为从服务器读取主服务器的二进制日志。
  • REPLICATION CLIENT(replication client):允许查询服务器的复制状态。

2. 数据库级别权限

这些权限授予用户对特定数据库的操作权限,可以通过指定数据库名来限制权限作用范围。

  • CREATE:允许用户创建新数据库或表。
  • DROP:允许删除现有的数据库或表。
  • ALTER:允许修改现有的表结构(例如添加/删除列或索引)。
  • CREATE TEMPORARY TABLES:允许创建临时表。
  • LOCK TABLES:允许锁定表以进行查询或更新。
  • SHOW VIEW:允许查看视图定义。
  • CREATE VIEW:允许创建视图。

3. 表级别权限

这些权限细化到某个数据库中的某张表,控制用户对该表的具体操作。

  • SELECT:允许读取表中的数据(即执行 SELECT 查询)。
  • INSERT:允许向表中插入数据(即执行 INSERT 操作)。
  • UPDATE:允许修改表中的数据(即执行 UPDATE 操作)。
  • DELETE:允许删除表中的数据(即执行 DELETE 操作)。
  • INDEX:允许在表上创建和删除索引。
  • REFERENCES:允许在外键约束中引用该表。

4. 列级别权限

这些权限比表级别权限更细化,应用于某个表中的特定列。比如,你可以授予某个用户只对特定列的 SELECT 权限。

  • SELECT (列名):允许用户读取表中的某些列。
  • UPDATE (列名):允许用户更新表中的某些列。

http://www.kler.cn/a/300692.html

相关文章:

  • Mybatis面试题
  • LabVIEW串口通信调试与数据接收问题
  • mac 安装mongodb
  • 无降智o1 pro——一次特别的ChatGPT专业模式探索
  • 基于微信小程序的电子点菜系统设计与实现(KLW+源码+讲解)
  • 改进果蝇优化算法之一:自适应缩小步长的果蝇优化算法(ASFOA)
  • C#的属性和方法
  • opencv羊群计数,动态目标检测跟踪
  • List集合特点,遍历方式,ArrayList(去重原理,增长因子论,LinkedList)
  • 【Kubernetes】常见面试题汇总(十一)
  • milvus的二进制文件集群部署
  • 区块链当前发展和未来展望
  • 【微服务】⭐️华为云obs功能抽取到公共服务,供所有项目使用
  • 【机器学习】马尔可夫随机场的基本概念、和贝叶斯网络的联系与对比以及在python中的实例
  • JS设计模式之装饰者模式:优雅的给对象增添“魔法”
  • 健身房|基于springboot的健身房管理系统设计与实现(附项目源码+论文+数据库)
  • Python数据分析与可视化
  • leetcode hot100_part01_哈希
  • Spring和Spring FrameWork有什么关系?两者是同一个东西吗?
  • 白帽SEO搜索引擎pc端怎么引流
  • Chrome和Chromium浏览器有什么不同?
  • knowLedge-在组件的第一次创建时执行某个方法,而在后续的创建中不执行:
  • 智能路口安全预警系统:精准提醒降低事故发生率
  • 继收购西门子物流自动化后,丰田又投资一家AGV公司,智能物流版图已极其夸张...
  • less和css在写法上有什么区别吗?
  • yield return request.SendWebRequest()