MySQL 命令分类之 DCL

1. 用户管理

1.1 查询用户

1
2
3
4
5
6
7
# 1. 切换到mysql数据库
USE mysql;

# 2. 查询user表
SELECT * FROM USER;

# * 通配符: % 表示可以在任意主机使用用户登录数据库

1.2 创建用户

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

1.3 修改用户密码

1
2
# 其中主机名表示创建的用户使用的IP地址,可以设置为localhost(代表本机)或者'%'(代表允许所有IP地址登录)
SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');

1.4 删除用户

1
2
3
DROP USER '用户名'@'主机名';
DROP USER username@访问域名,username1@访问域名,username2@访问域名
DROP from user where user=username

2. 授权管理

2.1 查询权限

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

2.2 授予权限

1
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

如给shy用户授予所有权限,在任意数据库任意表上

1
GRANT ALL ON *.* TO 'shy'@'localhost';

1.2 刷新权限

1
flush privileges

1.3 撤销权限

1
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

如撤销shy用户对所有数据库所有表的更新权限

1
revoke update on *.* from 'shy'@'localhost';

创建用户并授权

1
2
3
GRANT 数据库权限 ON 数据库对象 TO 用户名@用户地址 IDENTIFIED BY 用户口令;

grant all on *.* to username@访问域名 with grant option;

权限

数据库权限

1、SELECT:表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。
2、INSERT:表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。
3、DELETE:表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。
4、UPDATE:表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。
5、REFERENCES:表示授予用户可以创建指向特定的数据库中的表外键的权限。
6、CREATE:表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。
7、ALTER:表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。
8、SHOW VIEW:表示授予用户可以查看特定数据库中已有视图的视图定义的权限。
9、CREATE ROUTINE:表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。
10、ALTER ROUTINE:表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。
11、INDEX:表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。
12、DROP:表示授予用户可以删除特定数据库中所有表和视图的权限。
13、CREATE TEMPORARY TABLES:表示授予用户可以在特定数据库中创建临时表的权限。
14、CREATE VIEW:表示授予用户可以在特定数据库中创建新的视图的权限。
15、EXECUTE ROUTINE:表示授予用户可以调用特定数据库的存储过程和存储函数的权限。
16、LOCK TABLES:表示授予用户可以锁定特定数据库的已有数据表的权限。
17、SHOW DATABASES:表示授权可以使用SHOW DATABASES语句查看所有已有的数据库的定义的权限。
18、ALL或ALL PRIVILEGES:表示以上所有权限。

数据表权限:

1、SELECT:授予用户可以使用 SELECT 语句进行访问特定表的权限。
2、INSERT:授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限。
3、DELETE:授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限。
4、DROP:授予用户可以删除数据表的权限。
5、UPDATE:授予用户可以使用 UPDATE 语句更新特定数据表的权限。
6、ALTER:授予用户可以使用 ALTER TABLE 语句修改数据表的权限。
7、REFERENCES:授予用户可以创建一个外键来参照特定数据表的权限。
8、CREATE:授予用户可以使用特定的名字创建一个数据表的权限。
9、INDEX:授予用户可以在表上定义索引的权限。
10、ALL或ALL PRIVILEGES:所有的权限名。

四、权限级别:

1、*:表示当前数据库中的所有表。
2、*.*:表示所有数据库中的所有表。
3、db_name.*:表示某个数据库中的所有表,db_name指定数据库名。
4、db_name.tbl_name:表示某个数据库中的某个表或视图,db_name指定数据库名,tbl_name指定表名或视图名。
5、tbl_name:表示某个表或视图,tbl_name指定表名或视图名。
6、db_name.routine_name:表示某个数据库中的某个存储过程或函数,routine_name指定存储过程名或函数名。


MySQL 命令分类之 DCL
https://flepeng.github.io/041-MySQL-21-命令-MySQL-命令分类之-DCL/
作者
Lepeng
发布于
2021年3月6日
许可协议