在开始讲解以及分享答案之前
如果粘贴答案失效,请点击头歌系统右上角的电源键,释放资源重载数据库,再次进入才能正确通过
第1关:授予某数据库的所有权限
100
- 任务要求
- 参考答案
- 记录
- 评论
任务描述
本关任务:授权 user1@localhost用户对数据库 teachingdb及其所有对象的管理权限
相关知识
为了完成本关任务,你需要掌握 MySQL 的权限管理。
MySql系统库中的权限表
MySql 系统库中的权限表: user:最重要的权限表,存储允许连接到服务器的账号。 db:存储用户对某个数据库的操作权限。 host:存储某个主机对数据库的操作权限。 tables_priv:对单个表进行权限设置。 columns_priv:对单个数据列进行权限设置。 columns_priv:对存储过程和存储函数进行权限设置。
访问控制的两个阶段:
1、连接核实阶段 用户试图连接 MySQL 服务器时,服务器基于用户提供的信息来验证用户身份。使用 MySQL 的 user 表进行身份核实 2、请求核实阶段 对当前用户的每个操作都进行权限检查,判断用户是否有足够的权限来执行它。 如图所示
授予的权限等级:
全局层级:适用于一个给定服务器中所有的数据库。 数据库层级:适用于一个给定数据库中的所有目标。 表层级:适用于一个给定表中的所有列。 列层级:适用于一个给定表中的单一列。 子程序层级:适用于存储的子程序 ,可以被授权为全局层级和数据库层级。
grant priv_type [(column_list)] //要设置的权限项;
[,priv_type[(column_list)]][,.....n] on
{tbl_name|*|*.*|db_name.*|db_name.tbl_name} //对象类型;
to user[identified by [password] ‘password’]
[,user[identified by [password] ‘password’]][,....n]
[with grant_option] //可以将该用户的权限转移给其他用户;
示例:使用 grant 语句创建一个新用户 test1,密码为 test123,该用户对所有的数据又查询、插入的权限,并授予 grant 权限。
grant select,insert on *.* to test1@localhost identified by ‘test123’ with grant option;
revoke 语句的基本语法格式
revoke 语句的基本语法格式:
revoke priv_type [(column_list)][,priv_type[(column_list)]][,.....n] on
{tbl_name|*|*.*|db_name.*|db_name.tbl_name}
from ‘username’@’hostname’[,‘username’@’hostname’][,...n]
使用 revoke 语句收回收回 test1 用户对 course 数据库中 student 表的 update 权限示例:
revoke update on course.student from test1@localhost;
查看权限
语法:
show grants for username@hostname
例子: 查用用户 test1 的权限信息
show grants for test1@localhost;
限制权限
max_queries_per_hour count:表示每小时可以查询数据库的次数。 max_connections_per_hour count:表示每小时可以连接数据库的次数 max_updates_per_hour count:表示每小时可以修改数据库的次数。
示例:授予 test1 每小时可以发出的查询数为 50 次,每小时可以连接数据库 10 次,每小时可以发出的更新数为 5 次。
grant all on *.* to test1@localhost identified by ‘test123’
with max_queries_per_hour 50
with max_connections_per_hour 10
with max_updates_per_hour 5;
编程要求
根据提示,在右侧编辑器补充代码,授权 user1@localhost用户对数据库 teachingdb及其所有对象的管理权限。
测试说明
编写代码后,点击测评即可。
开始你的任务吧,祝你成功
第一关:
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
grant ALL on teachingdb.* to user1@localhost
/**********End**********/
第二关:
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
grant all on `teachingdb`.* to user1@localhost with grant option;
/**********End**********/
第三关:
use teachingdb;
GRANT ALL ON teachingdb.student TO user1@localhost,user2;
/**********End**********/
/**********End**********/
第四关:
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
grant UPDATE(grade) on teachingdb.score to user2@localhost;
第五关:
use teachingdb;
/****请在此编写代码,操作完毕之后点击评测******/
/**********Begin**********/
revoke select on `teachingdb`.* from user1@localhost;
/**********End**********/
标签:test1,grant,数据库,Educator,teachingdb,头歌,MySQL,权限,localhost
From: https://blog.csdn.net/iceslime/article/details/144077141