前言
我们知道,DCL: 用户的管理 ,和权限的使用。上一篇博客,我简述了用户的创建,删除,以及修改用户密码,今天,这篇博客,我将简述 “授权方式”
正文
注意:我们新创建的用户,默认情况下,是不具有任何权限的,所以这才需要我们设置权限。
查看权限
语法:
grant 权限列表 on 库.表 to 用户名@'ip' identified by "密码";
案例
注意:上图中
ALL
表示允许做任何事,而USAGE
则表示只允许登录,其他什么也做不了。下面切换为用户lyn
登录,并试图创建数据库发现,报错了,这就是我们设置了只允许登录权限,所以就无法创建数
授予权限
语法:
grant 权限列表 on 库.表 to 用户名@'ip' identified by "密码";
案例1
注意:上面的语句表示将所有数据库的所有权限授权给
lyn
这个用户,允许lyn
用户在123.123.123.123
这个 IP 进行远程登录,并设置lyn
用户的登录密码为123456
。
案例2
上面语句表示将
mysql_db
数据库中的sys_user
表的查询权限给qjh
用户。最后查看权限中也表示该用户对mysql_db
数据库sys_user
表有查询权限。注意:授权操作只能是
root
用户来操作;grant
给用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效;授权后一定要刷新权限,使权限立即生效:FLUSH PRIVILEGES;
撤销权限
语法:
revoke 权限列表 on 库.表 from 用户名@'ip';
特点:
1 revoke 和 grant 语法上差不多,就是将 to 改为 from。
并且revoke
语句中不需要跟密码设置2 和
grant
一样,revoke
用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。注意:
revoke
可以回收所有权限,也可以回收部分权限,且授权只是收回权限,用户仍可以登录。实例
上面的撤回语句表示将用户
qjh@'localhost'
在mysql_db
数据库中对sys_user
表的删除delete
权限撤销了,即该用户无法对mysql_db
数据库进行删除操作了。
投歌作业
第1关:数据库授权
问题:根据提示,在右侧编辑器中编写 SQL,将用户
casual_user@'localhost'
的密码修改为123456
,并给其授所有数据库的“增改查”的权限。(连接数据库的用户名为:root
,密码为:123123
。)代码如下
set password for casual_user@'localhost' = password('123456');
grant SELECT ,INSERT, UPDATE on *.* to casual_user@'localhost';
FLUSH PRIVILEGES;
第2关:数据库撤销权限
问题:在右侧编辑器中编写如下要求的 SQL:
将用户
user1
对数据库mydb1
中的table1
和table2
的所有权限收回将用户
user2
对数据库mydb2
中的所有表(mydb2.*
)的增加、查询、更新、删除、创建、修改属性权限收回代码如下
revoke all on mydb1.table1 from 'user1'@'localhost';
revoke all on mydb1.table2 from 'user1'@'localhost';
revoke insert,select,update,create,delete,alter on mydb2.* from 'user2'@'localhost';