SQL语句--数据库控制语言(DCL)语句及案例演示

DCL:数据库控制语言

  • 授权、角色控制
  • 针对mysql的权限控制是在数据库mysql里面的,所以在做操作之前需要使用use mysql;来进入并且进行操作
  • 本文使用的数据库是MySQL8

  • 现在我有这么一个需求,创建一个密码为recode_passwd,用户名为recode的用户,给这个用户赋予recode数据库的所有权限,并且可以进行连接

创建一个用户

  1. CREATE USER 'recode'@'localhost' IDENTIFIED WITH mysql_native_password by 'recode_passwd';

mysql的密码默认使用的是caching_sha2_password加密格式,WITH mysql_native_password是可选的,使用默认的加密方式的话,可能会导致无法连接数据库

  1. FLUSH PRIVILEGES ;进行权限的刷新

SQL语句--数据库控制语言(DCL)语句及案例演示

为用户进行数据库授权

  1. GRANT ALL ON recode.* TO 'recode'@'localhost';
  2. FLUSH PRIVILEGES; 进行刷新
  • ALL是指用户对数据库的操作权限,比如SELECT、INSERT、UPDATE等(不包括create、drop权限),而ALL是指recode用户赋予recode数据库所有的权限
  • recode.* 是指recode用户可以操作recode数据库下面所有的表

SQL语句--数据库控制语言(DCL)语句及案例演示

查看授权信息

SHOW GRANTS FOR 'recode'@'localhost';

SQL语句--数据库控制语言(DCL)语句及案例演示

使用recode用户进行连接数据库

  1. mysql -u recode -h localhost -p
  2. Enter password:输入密码’recode_passwd’,密码会隐藏

SQL语句--数据库控制语言(DCL)语句及案例演示

对用户的权限进行撤销

  1. REVOKE ALL ON recode.* FROM 'recode'@'localhost';
  2. FLUSH PRIVILEGES ;进行刷新

权限和之前赋予的权限需要一致,可以通过SHOW GRANTS FOR 'recode'@'localhost';查看授权信息;
此操作需要root权限,否则会报错ERROR 1044 (42000): Access denied for user 'recode'@'localhost' to database 'recode'

SQL语句--数据库控制语言(DCL)语句及案例演示

以上就是对数据库权限的一些基本的操作