06-MySQL-基础篇-SQL之DCL语句

SQL之DCL语句


前言

  • 本篇来学习下SQL中的DCL语句

DCL

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

管理用户

查询用户

sql 复制代码
SELECT * FROM MYSQL.USER;

说明:

  1. Host:代表当前用户访问的主机, 如果为localhost, 仅代表只能够在当前本机访问,是不可以远程访问的。
  2. User:代表的是访问该数据库的用户名。在MySQL中需要通过Host和User来唯一标识一个用户。

创建用户

sql 复制代码
# 语法
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'

# 示例
# 创建用户xiaobai, 只能够在当前主机localhost访问, 密码123456;
CREATE USER 'xiaobai'@'localhost' IDENTIFIED BY '123456'

# 创建用户dahai, 可以在任意主机访问该数据库, 密码654321;
CREATE USER 'dahai'@'%' IDENTIFIED BY '654321'

修改用户密码

sql 复制代码
# 语法
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ; 

# 示例
# 修改用户dahai的访问密码为123456;
ALTER USER 'dahai'@'%' IDENTIFIED WITH mysql_native_password BY '123456' ; 

删除用户

sql 复制代码
# 语法
DROP USER '用户名'@'主机名' ; 

# 示例
# 删除xiaobai@localhost用户
DROP USER 'xiaobai'@'localhost';

说明

  1. 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。
  2. 主机名可以使用 % 通配符,表示任意主机。

权限控制

常见权限描述

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

查询权限

sql 复制代码
# 语法
SHOW GRANTS FOR '用户名'@'主机名' ; 

# 示例
# 查询用户dahai@%的权限
GRANT USAGE ON *.* TO `dahai`@`%`

授予权限

sql 复制代码
# 语法
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; 

# 示例
# 授予 'dahai'@'%' 用户xiaobai_db1数据库所有表的所有操作权限
GRANT ALL ON xiaobai_db1.* TO 'dahai'@'%'; 

撤销权限

sql 复制代码
# 语法
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名'; 

# 撤销 'dahai'@'%' 用户xiaobai_db1数据库的所有权限
REVOKE ALL ON xiaobai_db1.* FROM 'dahai'@'%'; 

说明

  1. 多个权限之间,使用逗号分隔。
  2. 授权时, 数据库名和表名可以使用 * 进行通配,代表所有。
相关推荐
陈平安安7 小时前
设计一个秒杀功能
java·数据库·sql
Leo1877 小时前
MySQL 回表(Back to Table)详解
数据库·mysql
遇见火星7 小时前
MySQL 8.0复制架构主从自动切换脚本
mysql·adb·架构·mysql8.0·mysql主从
不知江月待何人..7 小时前
MySQL服务无法启动问题
数据库·mysql
廋到被风吹走7 小时前
【数据库】【Oracle】SQL基础
数据库·sql·oracle
李少兄8 小时前
一文搞懂什么是关系型数据库?什么是非关系型数据库?
数据库·redis·mysql·mongodb·nosql
会开花的二叉树8 小时前
即时通讯系统核心模块实现
数据库·mysql·elasticsearch
爱丽_9 小时前
MyBatis动态SQL完全指南
服务器·sql·mybatis
lightningyang10 小时前
渗透入门之SQL 注入(二)
数据库·sql·渗透·sql注入
四谎真好看10 小时前
MySQL 学习笔记(运维篇1)
运维·数据库·笔记·学习·mysql·学习笔记