头歌实践教学平台:数据科学与大数据技术导论(十八2)

十八、MySQL-数据库管理

第2关:权限管理

任务描述

在上一关中我们学习了如何创建用户,不同得用户通常所具有得权限是不同的,例如:财务部门可以查看部门信息表,但不能对部门信息表进行修改。为了实现上述目的,就需要对不同用户设置相应的权限。

本关任务:

对用户进行权限管理

相关知识

上一关中我们学习了如何创建新用户,但新用户默认不具有任何权限,只能看到默认的information_schema数据库。

权限介绍

在上一关中我们简单介绍了USER表,USER表中不仅存储了User、Host和Password,还有关于用户权限的信息。可以使用命令:

desc mysql.user;

查看USER表的所有表项,关于权限的选项都以_priv结尾,这些表项的值被设置为Y或者N,代表有或者没有相应权限。

在MySQL5.5系统默认提供的mysql数据库中,还有以下数据表中存储有权限信息:

host表
db表

tables_priv表(某个表)

columns_priv表(某个表的某个列)

procs_priv表(存储过程、存储函数)

proxies_priv表(角色、用户组)

权限的级别(或范围)分为以下几种:

全局级别,作用于整个MySQL上;

数据库级别,作用于某一个或某几个数据库;

数据库内的对象级别,作用于数据库的表、视图等对象;

查看权限

MySQL5.5中查看当前用户的权限:

SHOW GRANTS;

MySQL5.5中查看指定用户的权限:

SHOW GRANTS FOR "用户名"@"主机名";

例如我们使用右侧命令行查看root用户的权限如下图

可以看出root用户具有所有权限。

添加权限

MySQL5.5中通常使用GRANT命令为用户添加权限,其语句如下

GRANT PRIVILEGES ON DATABASE.TABLE TO "用户名"@"主机名";

具体语义说明:

PRIVILEGES代表要赋予用户的权限;

DATABASE是数据库名,可以用*代表所有的数据库;

TABLE是数据表名,可以用*代表所有的数据表;

**"用户名"和"主机名"**标识要授权的登陆用户

PRIVILEGES处常用的权限选项如下表:

权限选项 作用对象

create 数据表结构

alert 数据表结构

drop 数据表结构

select 数据表数据

update 数据表数据

delete 数据表数据

insert 数据表数据

all privileges 所有对象

查看全部的权限选项我们可以使用命令:

SHOW PRIVILEGES;

执行效果如下图

这条命令会显示:权限选项、作用对象和注释,信息非常详细。

应用示例 (1):

GRANT all privileges ON *.* TO "new-user1"@"%";

FLUSH PRIVILEGES;

all privileges代表所有权限;

"new-user1"@"%"从任何主机登陆的new-user1用户;

*.*代表所有数据库的所有数据表

执行效果即为任何主机登陆的new-user1用户具有root权限。

应用示例 (2):

GRANT select,update ON db1.emp TO "new-user1"@"%";

FLUSH PRIVILEGES;

select,update代表赋予的权限选项;

"new-user1"@"%"从任何主机登陆的new-user1用户;

db1.emp代表所有db1数据库的emp数据表

执行效果即为任何主机登陆的new-user1用户对db1数据库的emp数据表具有查询和更新权限。

【注意】:添加权限后必须执行更新权限操作,否则不会生效!!

收回权限

MySQL5.5中通常使用REVOKE命令为用户添加权限,其语句如下

REVOKE PRIVILEGES ON DATABASE.TABLE FROM "用户名"@"主机名";

具体语义说明:

PRIVILEGES代表要赋予用户的权限;

DATABASE是数据库名,可以用*代表所有的数据库;

TABLE是数据表名,可以用*代表所有的数据表;

**"用户名"和"主机名"**标识要授权的登陆用户

REVOKE命令和GRANT命令的语句格式基本相同,区别是

GRANT 与 TO 一起使用
REVOKE 与 FROM 一起使用

应用示例 (1):

REVOKE select,update ON db1.emp FROM "new-user1"@"%";

FLUSH PRIVILEGES;

执行效果即为任何主机登陆的new-user1用户对db1数据库的emp数据表不具有查询和更新权限。

应用示例 (2):

GRANT select,update ON db1.emp TO "new-user1"@"%";

FLUSH PRIVILEGES;

REVOKE all privileges ON *.* FROM "new-user1"@"%";

FLUSH PRIVILEGES;

在这个示例中,使用REVOKE命令收回在所有数据库的所有数据表上的所有权限,这里我们可能会觉得前面的GRANT所添加的权限会被取消,但是实际执行效果如下

可以看出并没有收回赋予的权限。所以收回权限要**【注意】:**

必须收回赋予权限所对应的权限;
添加权限后必须执行更新权限操作,否则不会生效!!

编程要求

本关的任务为:公司创建了数据库db1,首先收回财务部门用户FD-user对员工信息表emp的更新权限(UPDATE);然后为人力部门用户HR-user添加对员工信息表emp的查询(SELECT)和更新(UPDATE)权限。

【注意】:

财务部门用户FD-user从主机202.200.2.210登陆;

人力部门用户HR-user从主机202.200.3.110登陆;

执行语句时使用root管理员身份

测试说明

我们已经登录了MySQL,你只需要在右侧代码窗口输入MySQL语句实现以上操作,平台将自动编译你输入的MySQL语句。请注意语句的格式!请不要删去注释信息!

成功通关后预计输出:

success-收回权限成功

success-添加权限成功

人的大脑和肢体一样,多用则灵,不用则废。------茅以升

开始你的任务吧,祝你成功!

如果你觉得这一关的内容对你有帮助,请你在下面点赞。

//请在下面输入收回用户FD-user对员工信息表emp的更新权限的MySQL语句

/*********begin*********/

REVOKE UPDATE ON db1.emp FROM "FD-user"@"202.200.2.210";

FLUSH PRIVILEGES;

/********* end *********/

//请在下面输入为用户HR-user添加对员工信息表emp的查询和更新权限的MySQL语句

/*********begin*********/

GRANT SELECT,UPDATE ON db1.emp TO "HR-user"@"202.200.3.110";

FLUSH PRIVILEGES;

/********* end *********/

有任何问题都可以随时关注私信!

相关推荐
大大大大晴天3 小时前
元数据之后,数据治理该做什么:标准、指标与主数据
大数据
用户8356290780513 小时前
使用 Python 将 DOCX 转换为 Markdown
后端·python
小玮看世界3 小时前
[Python]ADAS工程实战(三):多传感器扇区统计疑难点全解——归一化、跨边界、去重与置信度
python
传奇开心果编程4 小时前
【Rust入门练中学】 第3课:数据类型
开发语言·学习·rust
TomEval4 小时前
【测AI】第02篇:Python 环境搭建与基础语法速通
人工智能·python·功能测试·aigc
归去来 兮4 小时前
LangChain从入门到精通
python·langchain·langgraph
移动云开发者联盟4 小时前
AI重塑短剧生产!移动云×咪咕 AIGC内容创作平台正式发布
大数据·人工智能
泡泡鱼(敲代码中)4 小时前
MySQL 学习笔记:DCL、函数与约束 —— 安全、效率、完整性的三板斧
开发语言·笔记·sql·学习·mysql·gitee
其实防守也摸鱼5 小时前
Codex 下载与本地部署实战:从安装到运行全指南
android·大数据·运维·安全·自动化
淘气的小猴子5 小时前
Python 魔术方法入门
python