DCL:数据库控制语言
- 授权、角色控制
- 针对mysql的权限控制是在数据库mysql里面的,所以在做操作之前需要使用
use mysql;
来进入并且进行操作 - 本文使用的数据库是MySQL8
- 现在我有这么一个需求,创建一个密码为recode_passwd,用户名为recode的用户,给这个用户赋予recode数据库的所有权限,并且可以进行连接
创建一个用户
CREATE USER 'recode'@'localhost' IDENTIFIED WITH mysql_native_password by 'recode_passwd';
mysql的密码默认使用的是
caching_sha2_password
加密格式,WITH mysql_native_password
是可选的,使用默认的加密方式的话,可能会导致无法连接数据库
FLUSH PRIVILEGES ;
进行权限的刷新
为用户进行数据库授权
GRANT ALL ON recode.* TO 'recode'@'localhost';
FLUSH PRIVILEGES;
进行刷新
- ALL是指用户对数据库的操作权限,比如SELECT、INSERT、UPDATE等(不包括create、drop权限),而ALL是指recode用户赋予recode数据库所有的权限
- recode.* 是指recode用户可以操作recode数据库下面所有的表
查看授权信息
SHOW GRANTS FOR 'recode'@'localhost';
使用recode用户进行连接数据库
mysql -u recode -h localhost -p
- Enter password:输入密码’recode_passwd’,密码会隐藏
对用户的权限进行撤销
REVOKE ALL ON recode.* FROM 'recode'@'localhost';
FLUSH PRIVILEGES ;
进行刷新
权限和之前赋予的权限需要一致,可以通过
SHOW GRANTS FOR 'recode'@'localhost';
查看授权信息;
此操作需要root权限,否则会报错ERROR 1044 (42000): Access denied for user 'recode'@'localhost' to database 'recode'
以上就是对数据库权限的一些基本的操作