4 权限控制DCL操作

📅 2026/7/13 0:03:56 👁️ 阅读次数 📝 编程学习
4 权限控制DCL操作
1.DCL就是Data Control Language,一般就是对于用户的权限做一些授权操作之类的2.直接构建用户,基于用户操作对应库表的权限

1. 用户的操作

创建用户:create user 用户名@IP地址 identified by 密码;

创建一个用户,用户名是zheng,密码是zheng,采用默认的IP,%。

#创建一个用户,用户名是zheng,密码是zheng。createuser'zheng'identifiedby'zheng';createuser'zhang'@'%'identifiedby'zhang';

如果指定了ip,则表示只有这个ip可以登录,默认的IP是%,作用等同于通配符


用户root,host是localhost,表示root这个用户只能通过本机登录

如果host是%,表示:无论是本地 还是远程都可以登录

删除用户:drop user 用户名;
删除上面的用户zhang

dropuser'zhang';

Ps:创建完毕的用户,密码插件默认是caching_sha2_password,正常黑窗口是可以连接的。如果Navicat版本比较低无法连接,需要将密码插件修改为mysql_native_password。

2. 授权

给用户赋予操作指定库和表的权限。

语法:grant all on 库名.表名 to 用户名;

all代表赋予这个库和表的所有操作权限。

库名和表名如果想赋予全部的,使用*代替。

# 赋予zheng用户,可以操作test库下所有表的所有操作权限。grantallontest.*to'zheng';

发现赋予权限后,依然无法连接,原因是zheng用户默认的加密插件版本太低,是caching_sha2_password无法识别,通过alter语句修改一下插件信息。

但是黑窗口是可以连接的

alteruser'zheng'@'%'identifiedwithmysql_native_passwordby'zheng';

正常连接后,可以看到具体的赋予权限的库表信息

注意:没有授权的话,是连接不上的

3. 撤销授权

语法:revoke all on 库名.表名 from 用户名;

# 撤销掉对zheng用户赋予的test库中所有表的所有权限revokeallontest.*from'zheng';