头歌实践教学平台:数据科学与大数据技术导论(十八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 *********/

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

相关推荐
一晌小贪欢13 分钟前
Python办公18:PDF 转 Word——利用 OCR 技术批量提取不可编辑的文档内容
开发语言·python·pdf·word·excel·数据可视化·python办公
智圣新创0118 分钟前
存量数字化校园升级破局:从基础数据集成到校务服务全域提效的通用落地路径
大数据·人工智能·物联网
wtGEOyh21 分钟前
2026:劲豆如何用科技“种”出大豆芯?
python·科技
我命由我1234522 分钟前
Android Camera - 获取当前设备屏幕的旋转角度、保存帧到外部存储的私有空间
android·java·开发语言·java-ee·android jetpack·android-studio·android runtime
SamChan9030 分钟前
用Prometheus+Grafana搭建PDF翻译服务监控看板:指标采集与告警实战
python·ai·pdf·grafana·prometheus·机器翻译
circuitsosk32 分钟前
多智能体协同在能源数据分析中的实践:分配-执行-校验闭环架构设计
python·数据分析·wpf·能源·并行计算·多智能体系统·agent协作
阮小贰34 分钟前
干支编码的确定性实现:节气切分 + 1000 条溯源断语(附 JS 源码)
开发语言·javascript·ecmascript
niuniudengdeng36 分钟前
从小程序到 WebView:一个理发店管理系统的全栈架构设计与落地实践
java·python
SelectDB技术团队41 分钟前
Apache Doris 在内容 AI 生产链路中的实践:从内容打标到可追溯数据链路
大数据·人工智能·大模型·向量检索·混合搜索·ai 打标·内容分析