文章目录
前言
MySQL是一个流行的开源关系型数据库管理系统,广泛应用于各种应用程序和数据管理场景。为了保护数据库中的数据安全,MySQL提供了DCL语句
和一系列权限控制机制,允许管理员对用户进行身份验证、授权和撤销等操作。
本文将总结MySQL数据库中的数据控制语言(DCL)和一些常用的权限控制机制。读者可以了解如何使用MySQL的DCL语句
来管理用户权限、授权和撤销等操作,以保护数据库的安全性和完整性。后续使用到其他会继续补充。
一、用户控制管理
1.1、创建用户
CREATE USER
语句用于创建新的数据库用户:
create user '用户名'@'主机名' identified by '密码';
1.2、修改用户密码
`ALTER USER`语句用于修改用户的密码:
alter user '用户名'@'主机名' identified with mysql_native_password by '密码';
1.3、删除用户
DROP USER
语句用于删除指定的用户:
drop user '用户名'@'主机名';
1.4、示例
#1 查询用户
use mysql;
select * from user;
#2 创建用户
create user 'root'@'localhost' identified by '123456';
#3 修改用户密码
alter user 'root'@'localhost' identified with mysql_native_password by '1234';
#4 删除用户
drop user 'root'@'localhost';
注意:
localhost: 表示匹配本地主机
%: 表示可以匹配任意主机
二、权限控制管理
2.1、查询权限
show grants for '用户名'@'主机号';
2.2、授予权限
GRANT
语句用于为用户授予特定的权限:
grant 权限列表 on 数据库名.表名 to '用户名'@'主机号';
2.3、删除权限
REVOKE
语句用于从用户中撤销特定权限:
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机号';
2.4、示例
# 查询权限
show grants for 'root'@'localhost';
# 授予权限
grant all on test.* to 'root'@'localhost';
# 删除权限
revoke all on test.* from 'root'@'localhost';
注意:
all: 可以表示授予全部权限。
test.*: *可以表示匹配任意数据,在数据库名,和表名中都可以使用。
三、 数据库权限列表
在MySQL数据库中,以下是一些常见的权限列表示例,可以用于授予或撤销数据库用户的权限:
3.1、全局级别权限
ALL PRIVILEGES:
赋予用户所有权限CREATE USER:
创建用户RELOAD:
重新加载授权表SHUTDOWN:
关闭服务器PROCESS:
查看和终止其他用户的进程SUPER:
执行超级用户操作
3.2、数据库级别权限
CREATE:
创建新数据库或表DROP:
删除数据库或表ALTER:
修改数据库或表结构SELECT:
查询数据INSERT:
插入数据UPDATE:
更新数据DELETE:
删除数据INDEX:
创建或删除索引REFERENCES:
创建外键LOCK TABLES:
锁定表格
3.3、表级别权限
SELECT:
查询数据INSERT:
插入数据UPDATE:
更新数据DELETE:
删除数据REFERENCES:
创建外键INDEX:
创建或删除索引ALTER:
修改表结构
3.4、列级别权限
SELECT:
查询数据INSERT:
插入数据UPDATE:
更新数据
3.5、存储过程和函数级别权限
EXECUTE:
执行存储过程和函数
3.6、权限管理
GRANT OPTION:
授予或撤销权限
具体的权限列表可能会在不同的MySQL版本和设置中有所不同。可以参考MySQL官方文档
四、补充
4.1、角色管理
-
创建角色:
CREATE ROLE
语句用于创建新的角色。CREATE ROLE 'rolename';
-
授予角色:
GRANT
语句用于为用户授予特定的角色。GRANT 'rolename' TO 'username'@'localhost';
-
撤销角色:
REVOKE
语句用于从用户中撤销特定角色。REVOKE 'rolename' FROM 'username'@'localhost';
4.2、其他权限控制方法
-
刷新权限:
FLUSH PRIVILEGES
语句用于重新加载权限表。FLUSH PRIVILEGES;
-
查看用户权限:
SHOW GRANTS
语句用于查看用户的权限。SHOW GRANTS FOR 'username'@'localhost';