在MySQL中,DCL代表数据控制语言(Data Control Language)。DCL用于管理数据库用户和控制数据的访问权限。一些常见的DCL命令包括:
这些命令可以帮助您控制谁可以访问您的数据库以及他们可以访问哪些数据。
创建用户的语法如下所示
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
本地主机主机名为localhost
,但如果希望任意主机都能访问mysql
时,把上面的主机名写为%
即可,如下所示。
CREATE USER '用户名'@'%' ;
我创建一个名为test的用户后,在navicat中查看用户如下所示:
可以看到创建用户后,test用户的所有权限列为N。也就是说新建用户后,该用户不具有权限,需要授权后使用。
修改用户密码的语法格式如下所示:
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
tips:
caching_sha2_password
插件取代。如果您的MySQL服务器仍在使用mysql_native_password插件,建议您升级到caching_sha2_password
插件,以提高安全性。示例
alter user 'test'@'localhost' identified with mysql_native_password by '123'
alter user 'test'@'localhost' identified with caching_sha2_password by '123'
语法如下所示
DROP USER '用户名'@'主机名';
在MySQL中常用的权限有以下几种:
*
进行通配,代表所有,如下所示:mysql.* 表示mysql库的任意表
#把数据库的所有库的所有权限都给test,并且是任意主机都可以操作
grant all privileges on *.* to 'test'@'%';
显示用户权限语法如下
show grants for 'test'@'localhost'
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
GRANT ALL ON db.students TO 'test'@'localhost'; #给用户test授予db数据库中的students数据表全部权限
SHOW GRANTS FOR 'test'@'localhost'; #查询用户权限
撤销权限语法格式如下:
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
示例代码如下:
REVOKE ALL ON db.students FROM 'test'@'localhost'; #用户test撤销db数据库中的students数据表全部权限
SHOW GRANTS FOR 'test'@'localhost'; #查询用户权限