SQL语句详解五-DCL(数据控制语言)

文章目录

    • DCL
      • 管理用户
        • 示例代码
      • 权限管理
        • 示例代码
        • 用户权限

DCL

  • 概述:DCL,数据库控制语言,用来管理用户和给用户授予权限的

管理用户

  1. 添加用户

    CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
    
  2. 删除用户

    DROP USER '用户名'@'主机名';
    
  3. 修改用户密码

    SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
    
  4. 查询用户

    • 首先切换到 MySQL 数据库
    USE mysql;
    
    • 查询 user 表
    SELECT * FROM USER;
    
  5. 通配符

    • % 表示可以在任意主机使用用户登录数据库
示例代码
-- 添加用户 lisi , 密码 lisi
CREATE USER 'lisi'@'localhost' IDENTIFIED BY 'lisi';-- 查询用户
USE mysql;		-- 首先切换到 mysql 数据库
SELECT * FROM USER;	-- 查询当前数据库用户表,可看到 lisi 创建成功-- 修改用户密码,在修改前,可通过命令框形式用 lisi 用户登录MySQL
SET PASSWORD FOR 'lisi'@'localhost' = PASSWORD('123');-- 删除 lisi 用户
DROP USER 'lisi'@'localhost';-- 查询用户
USE mysql;		-- 首先切换到 mysql 数据库
SELECT * FROM USER;	-- 查询当前数据库用户表,可看到 lisi 删除成功-- 添加用户 heng ,密码 heng 在所有主机使用
CREATE USER 'heng'@'%' IDENTIFIED BY 'heng';

权限管理

  1. 查询权限

    -- 显示此主机此用户的权限
    SHOW GRANTS FOR '用户名'@'主机名';
    
  2. 授予权限

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

    -- 撤销权限
    REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
    
示例代码
-- 显示 root 用户权限
SHOW GRANTS FOR 'root'@'localhost';-- 显示 lisi 用户权限
SHOW GRANTS FOR 'lisi'@'localhost';-- 显示 heng 用户权限
SHOW GRANTS FOR 'heng'@'%';-- 授予 lisi 更新权限
GRANT UPDATE ON *.* TO 'lisi'@'localhost';SHOW GRANTS FOR 'lisi'@'localhost';-- 授予 heng 所有权限
GRANT ALL ON *.* TO 'heng'@'%';SHOW GRANTS FOR 'heng'@'%';-- 撤销 heng 用户所有权限
REVOKE ALL ON *.* FROM 'heng'@'%';SHOW GRANTS FOR 'heng'@'%';-- 撤销 lisi 用户更新权限
REVOKE UPDATE ON *.* FROM 'lisi'@'localhost';
SHOW GRANTS FOR 'lisi'@'localhost';-- 删除 lisi heng 用户
DROP USER 'lisi'@'localhost';
DROP USER 'heng'@'%';SELECT * FROM USER;

这里 *.* 代表,所有数据库的所有数据表

用户权限
权限关键字权限的作用
SELECT允许用户查询数据库中的数据
INSERT允许用户向数据库中插入新的数据
UPDATE允许用户修改数据库中现有的数据
DELETE允许用户从数据库中删除数据
CREATE允许用户创建新的数据库、表、索引等对象
DROP允许用户删除数据库、表、索引等对象
GRANT OPTION允许用户将自己拥有的权限授予其他用户
REFERENCES允许用户在表中创建外键约束
INDEX允许用户创建索引
ALTER允许用户修改表的结构
CREATE TEMPORARY TABLES允许用户创建临时表
LOCK TABLES允许用户锁定表
EXECUTE允许用户执行存储过程
CREATE VIEW允许用户创建视图
SHOW VIEW允许用户查看视图的定义
CREATE ROUTINE允许用户创建存储过程和函数
ALTER ROUTINE允许用户修改存储过程和函数
EVENT允许用户创建、修改、删除事件
TRIGGER允许用户创建触发器