MySQL角色使用详解

在MySQL数据库管理系统中,角色是一种命名的权限集合,类似于用户账户,可以向其授予或撤销权限。通过将权限集以角色的形式分配给用户账户,MySQL提供了一种概念化和实现所需权限分配的便捷方式,替代了单独授予每个权限的传统做法。本文将详细介绍MySQL角色的管理与使用。

角色管理能力概览

MySQL支持以下角色管理功能:

  • 创建与删除角色:通过CREATE ROLEDROP ROLE语句来创建和移除角色。
  • 授权与撤销权限:使用GRANTREVOKE语句向用户账户和角色分配或撤销权限。
  • 查看权限分配SHOW GRANTS命令用于展示用户账户和角色的权限及角色分配情况。
  • 设置默认角色SET DEFAULT ROLE指定账户默认激活的角色。
  • 改变当前会话中的角色SET ROLE语句可以在当前会话中更改活跃角色。
  • 查询当前激活角色CURRENT_ROLE()函数显示当前会话中的激活角色。
  • 定义强制性角色与登录时自动激活所有角色:通过系统变量mandatory_rolesactivate_all_roles_on_login实现。
创建角色并授予权限

考虑一个应用案例,假设有一个名为app_db的数据库,该数据库关联的应用程序需要为开发者(拥有完全访问权)和不同权限级别的用户(读取或读写访问)创建账户。为了避免对多个用户账户逐一授权,可以创建代表所需权限集合的角色,并通过分配相应角色简化权限管理流程。例如,可以这样创建角色:

CREATE ROLE 'app_developer', 'app_read', 'app_write';

为角色分配权限与给用户分配权限相似,使用GRANT命令。例如,为developer_role分配SELECT, INSERT, UPDATE, 和 DELETE权限,对特定数据库myapp_db

GRANT SELECT, INSERT, UPDATE, DELETE ON myapp_db.* TO 'developer_role';

admin_role分配更广泛的权限,包括但不限于创建、修改和删除数据库和表的权限:

GRANT ALL PRIVILEGES ON *.* TO 'admin_role' WITH GRANT OPTION;

随后,通过GRANT语句将这些角色赋予相应的用户账户,如:

GRANT 'app_developer' TO 'dev1'@'localhost';
GRANT 'app_read' TO 'read_user1'@'localhost', 'read_user2'@'localhost';
GRANT 'app_read', 'app_write' TO 'rw_user1'@'localhost';
强制性角色与角色激活
  • 强制性角色:通过设置系统变量mandatory_roles,可以指定某些角色对所有用户自动生效,无需显式分配。
  • 激活角色:用户连接服务器后,默认情况下角色并不自动激活。使用SET DEFAULT ROLE可设定每次登录时默认激活的角色集,而SET ROLE允许在会话中动态切换角色状态。
  • 自动激活:若要使所有显式授予的角色和强制角色在用户连接到服务器时自动激活,请启用 activate_all_roles_on_login 系统变量。默认情况下,自动角色激活处于禁用状态。
检查、撤销与删除角色
  • 检查权限:利用SHOW GRANTS可验证角色或用户所拥有的权限。
  • 撤销权限或角色:通过REVOKE语句收回角色或角色中的特定权限。
  • 删除角色:不再需要的角色可以通过DROP ROLE语句删除。
用户与角色的互换性

用户账户与角色之间存在一定的互换性,即可以像处理角色一样对待用户账户,通过互相授权来传递权限。这在处理遗留系统或需要灵活权限调整的场景中尤为有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/860275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QFile文件操作详解

QFile文件操作 一、QFile的基本操作2.1. 打开和关闭文件2.2. 文件读取和写入2.3. 文件重命名和移动2.4. 删除文件 二、QFile 错误处理和状态检查三、QIODevice详细说明总结 在Qt框架中,QFile类提供了对文件的操作,包括读取、写入、重命名、移动和删除等功…

掌握 PostgreSQL 的 LISTEN 和 NOTIFY 机制:实时数据库通知的艺术

掌握 PostgreSQL 的 LISTEN 和 NOTIFY 机制:实时数据库通知的艺术 引言 在现代应用架构中,数据库扮演着核心角色,而 PostgreSQL 以其强大的功能和灵活性成为开发者的首选。PostgreSQL 的 LISTEN 和 NOTIFY 机制为开发者提供了一种在数据库层…

AI绘画Stable Diffusion - 功能性LoRA推荐!年龄调整、衣服增减、人物距离调整一键搞定!

大家好,我是画画的小强 AI绘画工具 **Stable Diffusion(SD)**以其强大的图片生成能力被越来越多的爱好者使用,而LoRA技术,作为SD中的一个关键组件,为创作者提供了更多的灵活性和控制力。今天,我…

C#面:详细举例阐述什么是多态性?

多态性是面向对象编程中的一个重要概念,它允许一个对象可以以多种不同的方式工作。在C#中,多态性通过虚函数来实现。 举个例子来说明多态性的概念。假设我们有一个基类Animal,它有一个虚方法MakeSound(),并…

pandas将dataframe展开/拉伸成一个series

pandas提供了一个函数实现这个操作: dataframe.stack()示例程序: import pandas as pd import numpy as npdf pd.DataFrame(np.random.randint(0, 10, size(2, 4)), columns[col_1, "col_2", "col_3", "col_4"]) # 展…

Arduino 红外线控制器

Arduino 红外线控制器 红外线小车 You’ve likely encountered the infrared remote controller, also known as the IR remote controller, while using home electronic devices like TVs and air conditioners… In this tutorial, we are going to learn how to use infra…

Jedis基本操作

Jedis库提供了对Redis数据库的丰富操作,包括但不限于基本的CRUD操作、事务、管道、发布订阅、哈希、列表、集合、有序集合操作等。由于篇幅限制,我将介绍一些最常用的方法,并为每个方法提供示例说明。 Jedis连接和基础操作 连接Redis Jedi…

【机器学习】基于Gumbel-Sinkhorn网络的“潜在排列问题”求解

1. 引言 1.1.“潜在排列”问题 本文将深入探索一种特殊的神经网络方法,该方法在处理离散对象时展现出卓越的能力,尤其是针对潜在排列问题的解决方案。在现代机器学习和深度学习的领域中,处理离散数据一直是一个挑战,因为传统的神经网络架构通常是为连续数据设计的。然而,…

scroll-view标签里引入弹窗层级问题

小程序scroll-view标签里引入弹窗(model)层级问题 在使用scroll-view组件时,在其内部嵌套了一个弹窗(如modal),但是弹窗无法正确显示在最上层。这是因为scroll-view默认的层级(z-index&#xf…

自然语言处理(NLP)—— Rasa中config.yml

调整你的NLU模型:选择合适的处理管道 在启动一个新的项目时,Rasa 会为你提供一个建议的自然语言理解(NLU)配置。然而,随着项目的不断发展,你可能需要对配置进行调整,以更好地适应不断扩展的训练…

使用JAVA代码实现发送订阅消息以及模板消息

今天写了一个商品到货提醒的job任务,具体效果如下 这里用到了微信的发送订阅消息,主要代码是这一块的,最后我把发送了消息的订单存到表里,因为是定时任务,大家可不存 发送订阅消息 | 微信开放文档 /*** 微信平台-商品…

【系统架构师】-论文-论软件可靠性分析与设计

1、摘要: 我就职于一家在线教育互联网公司,公司为了深耕中、小学的教学资源消费市场,决定在 2017 年3月份决定升级一款教学资源搜索与下载产品,“*校通”。我有幸作为该产品系统架构师,负责了系统架构工作。本文以该产品升级的可靠…

玩转Linux dd命令:备份与恢复指南

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 玩转Linux dd命令:备份与恢复指南 前言简介基本语法常用选项 示例3. 高级用法 性能优…

python-九九乘法表(对齐式1)

[题目描述] 输出九九乘法表,输出格式见样例。输入格式: 无输出格式: 输出乘法表,对齐方式见样例输出。样例输入 无样例输出 来源/分类(难度系数:一星) 完整代码展示: #对齐式1 a[] …

夏季生鲜防损规范

一、引言 在夏季,高温与高湿度的环境条件对生鲜商品的品质和保存构成了严峻挑战,生鲜商品由于其天然的易腐特性,在夏季极易发生变质和损耗,那么超市夏季生鲜防损规范主要包含哪几个方面呢? 二、生鲜商品分类及特点 …

使用 MediaSession API 控制 Web 媒体播放

在现代的 web 应用程序中,多媒体播放已经成为了很常见的功能。为了提供更好的用户体验,我们可以使用 MediaSession API 来控制网页中的媒体播放。 什么是 MediaSession API? MediaSession API 允许网页控制媒体会话,例如音频和视…

C/C++混合编译说明

C调用C的函数: C的头文件中声明,被C调用的函数,是以C的方式编译 C的头文件: #ifdef __cplusplus extern "C" { #endif void func_c(void); #ifdef __cplusplus } #endif C调用C的函数: C的源文件中声明&#xff…

Windows操作防火墙命令

Windows操作防火墙命令 启用防火墙: netsh advfirewall set allprofiles state on禁用防火墙: netsh advfirewall set allprofiles state off添加新的入站规则允许端口80(HTTP): netsh advfirewall firewall add r…

Python生成器嵌套太多?使用yield from秒变简洁!

目录 1、yield from基础概念 🌐 1.1 yield关键字回顾 1.2 yield from引入动机 2、yield from深入解析 🧭 2.1 语法与用法 2.2 传递生成器控制权 2.3 与迭代器的高效整合 2.4 与传统yield对比优势 3、实战应用示例 📈 3.1 链接多个生成器 3.2 简化递归生成器实…

Git之checkout/reset --hard/clean -f区别(四十二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…