目录
一、概述
DCL,Data Control Language 数据控制语言
用来管理数据库用户、控制数据库的访问权限。
二、DCL-管理用户
1、查询用户
MySQL中,用户信息存储于系统数据库mysql的user表中。
USE mysql;
SELECT * FROM user;
2、创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
3、修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
备注:
mysql 9中已不再需要使用WITH mysql_native_password
直接
ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
4、删除用户
DROP USER '用户名'@'主机名';
注意:
主机名可以使用%通配;
DCL-管理用户案例
-- ---------- DLC 管理用户 ----------
-- 0.查询用户
USE mysql;
SELECT * FROM user;
-- 1.创建用户local_user,只能在当前主机localhost访问数据库,密码123456
CREATE USER 'local_user'@'localhost' IDENTIFIED BY '123456';
SELECT * FROM user;
-- 2.创建用户remote_user,可以再任意主机访问数据库
CREATE USER 'remote_user'@'%' IDENTIFIED BY '123456';
SELECT * FROM user;
-- 3. 修改用户remote_user的密码为123123
ALTER USER 'remote_user'@'%' IDENTIFIED BY '123123';
SELECT * FROM user;
-- 4.删除用户local_user
DROP USER 'local_user'@'localhost';
SELECT * FROM user;
三、DCL-权限控制
MySQL中定义了很多种权限,常用的包括以下几种:
-
ALL,ALL PRIVILEGEDS 所有权限
-
SELECT 查询数据
-
INSERT 插入数据
-
UPDATE 修改数据
-
ALTER 修改表
-
DROP 删除数据库/表/视图
-
CREATE 创建数据库/表
1、查询权限
SHOW GRANTS FOR '用户名'@'主机名';
2、授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
3、撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
注意:
-
多个权限之间,使用逗号分隔。
-
授权时,数据库名和表名都可以使用字符*进行通配,代表所有。
-- ---------- DCL 权限控制 ----------
-- 1.查询权限
SHOW GRANTS FOR 'remote_user'@'%';
-- 2.授予权限
GRANT ALL ON my_database.emp TO 'remote_user'@'%';
# 查询权限
SHOW GRANTS FOR 'remote_user'@'%';
-- 3.撤销权限
REVOKE ALL ON my_database.emp FROM 'remote_user'@'%';
四、DCL小结
1、用户管理
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
ALTER USER '用户名'@'主机名' IDENTIFIED BY '新密码';
DROP USER '用户名'@'主机名';
2、权限控制
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';