DCL
DCL,即数据控制语言(Data Control Language),主要用于管理数据库系统的权限。
在MySQL中,DCL主要由GRANT
和REVOKE
两个指令构成。
用户
查询用户
select * from mysql.user;
创建用户
在MySQL中,你可以使用CREATE USER
语句来创建一个新的用户。
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
关键字:CREATE USER ,IDENTIFIED BY
修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;
关键字:ALTER USER,IDENTIFIED WITH mysql_native_password BY
删除用户
DROP USER '用户名'@'主机名' ;
关键字:DROP USER
注意
主机名可以使用 % 通配,即选中所有主机。
权限
常用的权限
权限 | 说明 |
---|---|
ALL, ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
查询用户的权限
SHOW GRANTS FOR '用户名'@'主机名' ;
授予用户权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
权限列表:授予用户的权限总
数据库名.表名:仅授予用户处理此数据库中此表的权限
关键字:GRANT…ON…TO
撤销用户的权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
权限列表等同上。
有参数的权限列表
在权限列表中,不仅仅可以是多个权限关键字构成,还可以在权限关键字后加括号,在括号中添加字段参数,使用户只有针对表中某列的权限。
如
grant update(id) on stu.student to 'st_01'@'%';
这里用户st_01只有对stu数据库中student表中的id列有更新修改的权限。
注意
授权时, 数据库名和表名可以使用 * 进行通配,代表所有。
授予用户调用存储过程的权限
GRANT EXECUTE ON 数据库名.存储过程名 TO '用户名'@'主机名';