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';