数据库原理 头歌实训 数据库安全控制 |
您所在的位置:网站首页 › 头歌实训作业答案数据库 › 数据库原理 头歌实训 数据库安全控制 |
这一章需要先做创建用户 创建用户 第1关:创建用户 任务描述本关任务:创建用户 user1 @localhost,密码为 'user1'; 相关知识为了完成本关任务,你需要掌握 MySQL 的用户管理。 用户分类: 1.超级管理员用户 root,默认建立的,密码为空,拥有数据库中所有的权限。 2.普通用户,只拥有创建时赋予它的权限。 用户信息存放在数据库 mysql 的 user 表中。 user 表中字段: Host:可以登陆数据库的主机地址;User:用户登陆名;authentication_string :加过密的登陆密码;_priv 结尾的字段:表明用户的权限。由于用户信息是存放在 user 表中,因此在 MySql 中对用户的管理既可以使用 Mysql 特定的语句,也可以直接使用标准的 SQL 语句。 需要注意的是,不管使用 Mysql 特定的语句还是标准的 SQL 语句,都必须要有使用这些语句的权限以及对 mysql 这个数据库及 user 表操作的权限。 增加用户 增加用户方式一语法: create user 用户名@主机名 //用户名区分大小写,主机名连接来自的主机;[ identified by [password] ‘密码’] //密码区分大小写;[ , 用户名@主机名[identified by [password] [‘密码’]] [ ,... ] //可以同时创建多个数据库用户,中间用逗号分隔。增加用户示例: 使用 create user 语句增加一个用户 cat,只允许在本地主机登陆,并设置密码为 cat123。 create user cat@localhost identified by 'cat123';增加用户方式二语法: grant 权限类别 //权限类别表示各类权限,用逗号隔开;on 数据库名.表名 to 用户名@主机名 [ identified by [password] ‘password’] [,用户名@主机名[identified by password[‘password’]] [,...]增加用户示例: 使用 grant 语句增加一个用户 mouse,可以在任何主机上登陆,设置密码为 mouse123,并授予该用户对 course 数据库所有表的查询、插入和更新权限。 grant select,insert,update on course.* to mouse@'%' identified by 'mouse123';修改用户名 修改用户名语法: rename user 老用户 to 新用户 [ , 老用户 to 新用户] ....示例:使用 rename user 语句将用户 cat 名字更改为 tom。 rename user cat@localhost to tom@localhost;修改用户密码 修改用户密码语法: set password [for 用户] //不加 “for 用户”,表示修改当前用户的密码;用户必须以“用户名@主机名”格式=password(‘’)示例:使用 set password 语句将用户 tom 的密码改为 hello。 set password for ‘tom@’localhost’ = password(‘hello’);删除用户 删除用户语法: drop user 用户 [ , 用户] ....示例:使用 drop user 语句删除可以在任意主机上登陆的用户 mouse。 drop user ‘mouse’@’%’; 编程要求根据提示,在右侧编辑器补充代码。创建用户 user1 @localhost,密码为 'user1'; 代码如下:create user user1@localhost identified by 'user1'; 第2关:创建用户-练习 任务描述本关任务:创建用户 user2,密码为 'user2'。 相关知识见上一关 编程要求根据提示,在右侧编辑器补充代码。创建用户 user2,密码为 'user2'; 代码如下: create user user2 identified by 'user2'; 授权及回收权限 第1关:授权 任务描述本关任务:系统用户 root 授权 user1 用户创建数据库 teachingdb2 及其所有对象的权限 相关知识为了完成本关任务,你需要掌握 MySQL 的权限管理。 MySql系统库中的权限表 MySql 系统库中的权限表: user:最重要的权限表,存储允许连接到服务器的账号。 db:存储用户对某个数据库的操作权限。 host:存储某个主机对数据库的操作权限。 tables_priv:对单个表进行权限设置。 columns_priv:对单个数据列进行权限设置。 columns_priv:对存储过程和存储函数进行权限设置。 访问控制的两个阶段: 1、连接核实阶段 用户试图连接 MySQL 服务器时,服务器基于用户提供的信息来验证用户身份。使用 MySQL 的 user 表进行身份核实 2、请求核实阶段 对当前用户的每个操作都进行权限检查,判断用户是否有足够的权限来执行它。 如图所示: 授予的权限等级: 全局层级:适用于一个给定服务器中所有的数据库。 数据库层级:适用于一个给定数据库中的所有目标。 表层级:适用于一个给定表中的所有列。 列层级:适用于一个给定表中的单一列。 子程序层级:适用于存储的子程序 ,可以被授权为全局层级和数据库层级。 MySQL 权限类型 如图所示: grant 语句的基本语法格式 grant 语句的基本语法格式: 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 50with max_connections_per_hour 10with max_updates_per_hour 5; 编程要求根据提示,在右侧编辑器补充代码,系统用户 root 授权 user1 用户创建数据库 teachingdb 及其所有对象的权限 代码如下: grant all privileges on teachingdb.* to user1@localhost; 第2关:授权-练习一 任务描述本关任务:给 user1 授予在 teachingdb 所有对象上的 SELECT 权限,并使该用户具有给其他用户授予相同权限的权限。 相关知识见上一关 编程要求根据提示,在右侧编辑器补充代码,给 user1 授予在 teachingdb 所有对象上的 SELECT 权限,并使该用户具有给其他用户授予相同权限的权限。 代码如下: grant select on table teachingdb.* to user1@localhost with grant option; 第3关:授权-练习二 任务描述本关任务:给 user1 和 user2 授予 stuednt 表上的所有权限。 相关知识见上一关 编程要求根据提示,在右侧编辑器补充代码。给 user1 和 user2 授予 stuednt 表上的所有权限。 测试说明点击右上角的重置命令行 先点击命令行,来到命令行界面 然后点击右侧的重置命令行按钮,进行重置 编写代码后,点击测评即可。 代码如下: grant all privileges on table teachingdb.student to user1@localhost,user2@localhost; 第4关:授权-练习三 本关在做的时候头歌有问题,直接测评就可以通过,无法确定代码正确,我自己写的代码仅供参考,不清楚每个人的头歌是否一样,望各位注意。如果有大佬看出问题,恳请指出,谢谢。 任务描述本关任务:给 user2 授予 score 表 grade 字段上的UPDATE权限。 相关知识见上一关 编程要求根据提示,在右侧编辑器补充代码。给 user2 授予 score 表 grade 字段上的 UPDATE 权限。 代码如下: grant update(grade) on table score to user2@localhost; 第5关:回收权限 任务描述本关任务:从 user1@localhost 用户收回查询 teachingdb 所有对象的SELECT权限。 相关知识见第一关 编程要求根据提示,在右侧编辑器补充代码,从 user1@localhost 用户收回查询 teachingdb 所有对象的 SELECT 权限。 代码如下: revoke select on table teachingdb.* from user1@localhost; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |