Jw
首页
技术
英语
首页
技术
英语
  • MySQL

    • MySQL 基础
    • 环境变量配置(PATH)
    • SQL 语法与分类
    • MySQL 数据类型
    • SQL - DDL 数据定义语言
    • SQL - DML 数据操作语言
    • SQL - DQL 数据查询语言
    • SQL - DCL 数据控制语言
    • MySQL 函数
    • SQL 约束
    • SQL 外键约束
    • 多表关系
    • 多表查询(连接查询)
    • 隐式内连接 vs 显式内连接
    • 子查询
    • 多表查询案例
    • 事务
    • 并发事务问题与隔离级别
    • MySQL 体系结构与存储引擎
    • 索引概述
    • 索引结构
    • 索引分类
    • 索引语法
    • SQL 性能分析
    • 索引使用
    • 索引设计原则
    • SQL 优化 - 插入数据与主键优化
    • SQL 优化 - order by 与 group by
    • SQL 优化 - limit / count / update
    • 视图
    • 存储过程
    • 存储过程 - 变量
    • 存储过程 - 流程控制、游标与条件处理
    • 存储函数
    • 触发器
    • 锁概述与全局锁
    • 表级锁
    • 行级锁
    • InnoDB 逻辑存储结构
    • InnoDB 架构
    • 事务原理(redo / undo log)
    • MVCC
    • MySQL 系统数据库
    • MySQL 常用工具
    • 数据备份与导入导出
    • 错误日志与二进制日志
    • 查询日志与慢查询日志
    • 主从复制 - 概述与原理
    • 主从复制 - 搭建
    • Mycat 配置
    • Mycat 垂直拆分与水平拆分
    • Mycat 分片规则
    • Mycat 管理与监控
    • Mycat 读写分离 - 一主一从
    • Mycat 读写分离 - 双主双从

SQL - DCL(数据控制语言)

DCL(Data Control Language,数据控制语言)用来管理数据库用户、控制数据库的访问权限。 一个用户可以访问多个数据库,一个数据库也可以被多个用户访问;这类 SQL 开发人员操作较少,主要由 DBA(Database Administrator,数据库管理员)使用。

一、用户管理

操作语法
查询用户USE mysql; → SELECT * FROM user;
创建用户CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
修改密码ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
删除用户DROP USER '用户名'@'主机名';
-- 查询用户(用户信息存放在 mysql 库的 user 表中)
USE mysql;
SELECT * FROM user;

-- 创建用户:只能从当前主机访问
CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456';

-- 创建用户:可从任意主机访问(% 通配)
CREATE USER 'user2'@'%' IDENTIFIED BY '123456';

-- 修改密码
ALTER USER 'user2'@'%' IDENTIFIED WITH mysql_native_password BY '1234';

-- 删除用户
DROP USER 'user1'@'localhost';
  • 主机名可以用 % 通配,表示任意主机;
  • 用户名与主机名要成对书写('用户名'@'主机名');
  • 只创建用户、不授予权限时,该用户能登录但没有任何库表操作权限;
  • MySQL 8.4 起 mysql_native_password 已废弃,改用默认的 caching_sha2_password 时可不指定 IDENTIFIED WITH。

二、权限控制

常用权限

权限说明
ALL, ALL PRIVILEGES所有权限
SELECT查询数据
INSERT插入数据
UPDATE修改数据
DELETE删除数据
ALTER修改表
DROP删除数据库 / 表 / 视图
CREATE创建数据库 / 表

其余权限的含义见官方文档:https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html

语法

-- 查询权限
SHOW GRANTS FOR '用户名'@'主机名';

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

-- 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
-- 查看 user2 的权限
SHOW GRANTS FOR 'user2'@'%';

-- 授予 test_db 库所有表的全部权限
GRANT ALL ON test_db.* TO 'user2'@'%';

-- 撤销权限
REVOKE ALL ON test_db.* FROM 'user2'@'%';
  • 多个权限之间用逗号分隔;
  • 授权时数据库名和表名可以用 * 通配,代表所有。

三、速查

-- 用户管理
USE mysql;
SELECT * FROM user;
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
DROP USER '用户名'@'主机名';

-- 权限控制
SHOW GRANTS FOR '用户名'@'主机名';
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

相关

  • SQL 语法与分类:书写规范 + DDL / DML / DQL / DCL
  • SQL - DDL:建库、建表、改表、删表
  • SQL - DML:增删改数据
  • SQL - DQL:基本查询 / 条件 / 聚合 / 分组 / 排序 / 分页
最近更新: 2026/10/7 00:24
Contributors: liujw
Prev
SQL - DQL 数据查询语言
Next
MySQL 函数