《SQL与数据库基础》05. SQL-DCL
阅读原文时间:2023年08月29日阅读:4

目录


本文以 MySQL 为例

DCL

查询有哪些用户

1、

USE mysql;

SELECT * FROM user;

2、

SELECT * FROM mysql.user;

注:

在 MySQL 中,用户保存在 mysql 库中的 user 表中。

创建用户

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

修改用户密码

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

删除用户

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

注:

在 MySQL 中需要通过“用户名@主机名”的方式,来唯一标识一个用户。

主机名可以使用 % 通配。

DCL 主要是 DBA(Database Administrator 数据库管理员)使用。

示例:

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

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

# 修改用户xiaohong的访问密码为1234
ALTER USER 'xiaohong'@'%' IDENTIFIED WITH mysql_native_password BY '1234';

# 删除 xiaoming@localhost 用户
DROP USER 'xiaoming'@'localhost';

查询权限

SHOW GRANTS FOR '用户名'@'主机名';

授予权限

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

撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注:

多个权限之间,使用逗号分隔。

授权时,数据库名和表名可以使用 * 进行通配,代表所有。

MySQL中定义了多种权限,常见的为以下几种:

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