【MySQL】——用户和权限管理(二)

💻博主现有专栏:

                C51单片机(STC89C516),c语言,c++,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux,基于HTML5的网页设计及应用,Rust(官方文档重点总结),jQuery,前端vue.js,Javaweb开发,Python机器学习等
🥏主页链接:

                Y小夜-CSDN博客

目录

🎯权限管理

🎃MySQL的各种权限

🎃授予权限和查看权限

🎃收回权限

🎯角色管理    

🎃创建角色

🎃授予及查看角色权限

🎃激活角色

🎃收回角色或角色权限

🎃删除角色

🎃角色和用户交换


🎯权限管理

🎃MySQL的各种权限

MySQL的权限类型分为全局级、数据库级、表级、列级和例程(存储过程、函数)级。用户权限都存储在mysql系统数据库的权限表中,如表所示。

(1)全局级(用户级)权限:和MySQL所有的数据库相关。

(2)数据库级权限:和一个具体的数据库中的所有表相关。

(3)表级权限:和一个具体表中的所有数据相关。

(4)列级权限:和表中的一个具体列相关。

(5)例程级权限。这些权限可以被授予为全局级和数据库级,也可以被授予为例程级。

🎃授予权限和查看权限

在MySQL中使用GRANT语句只能对已存在的用户授权,如果授权的用户不存在,则会出错。

基本语法格式为:

GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...

    ON [object_type] priv_level

    TO user_or_role [, user_or_role] ...

    [WITH GRANT OPTION]

参数说明:

priv_type:表示用户的权限,如select,update。

column_list :列名。

object_type:(如果存在)应指定为表、函数或过程。

priv_level :表示用户的权限范围。

user_or_role:用户或角色,用户由用户名和主机名组成。

WITH GRANT OPTION:表示该用户可以将自己拥有的权限授权给其他用户。

1. 查看新用户的权限

        用户可以通过SHOW GRANTS语句查看拥有哪些权限,当然如果有对mysql数据库的访问权限也可以直接查询权限表。

        基本语法格式为:

SHOW GRANTS [FOR user_or_role];

说明:user_or_role表示用户或角色。

SHOW GRANTS;语句表示查看当前用户的权限,也可以表示成:

SHOW GRANTS FOR CURRENT_USER;

或者 SHOW GRANTS FOR CURRENT_USER();

2.授予表级权限和列级权限

(1)授予表级权限

        授予表级权限时,priv_type的值具体可以查看相应的权限表。

        基本格式为:

GRANT权限列表 ON 数据库名.表名 TO 用户 [WITH GRANT OPTION];

3. 授予数据库权限

授予数据库权限时,priv_type的取值可以查看mysql.db表。

        基本格式为:

GRANT权限列表 ON 数据库名.*  TO 用户 [WITH GRANT OPTION];

说明:授予数据库权限时ON关键字后面跟“*”和“数据库.*”。“*”表示当前数据库中的所有表;“数据库.*”表示某个数据库中的所有表。

4. 授予全局级权限

授予全局权限时priv_type的取值可以查看mysql.user表。

基本格式为: GRANT权限列表 ON *.* TO 用户 [WITH GRANT OPTION];

说明: ON子句中使用“*.*”,表示所有数据库的所有表。

🎃收回权限

        收回权限就是取消某个用户的某些权限。

        要使用REVOKE,用户必须拥有mysql数据库的全局CREATE USER权限或UPDATE权限。

基本语法格式:

REVOKE priv_type[(column_list)] [, priv_type [(column_list)]] ...

ON [object_type] priv_level

FROM user_or_role [, user_or_role] ...

或者: REVOKE ALL [PRIVILEGES], GRANT OPTION FROM user_or_role [, user_or_role]         说明:参数的含义与grant命令的参数含义相同。第一种格式用来回收某些特定的权限,第二种格式回收所有该用户的权限。

🎯角色管理    

        MySQL角色是权限的命名集合。像用户一样,角色可以拥有授予和撤销的权限。

         可以向用户授予角色,该角色将与每个角色相关联的权限授予该用户。这样就可以将权限集分配给用户,并为授予用户权限提供了一种方便的替代方法,既可以概念化所需的权限分配,也可以实现它们。

🎃创建角色

创建角色使用CREATE ROLE命令,基本语法格式为

CREATE ROLE [IF NOT EXISTS] role [, role ] ...

        角色名的语法和语义同用户名:角色名称由用户名和主机名两部分组成。存储在授权表中时,它们具有与用户名相同的属性,这些属性在授权表账号列属性中有描述。

角色名与用户名不同之处:

        角色名称的用户名不能为空。

  • 省略角色名的主机名默认为“%”。但与用户名中的“%”不同,角色名中“%”的主机部分没有通配符属性。
  • 角色名的主机名中的网络掩码没有意义。

注意:

(1)CREATE ROLE一次可以创建一个或多个角色,这些角色被命名为权限集合。若要使用CREATE ROLE语句,必须具有CREATE ROLE 或CREATE USER权限。启用read_only系统变量时,CREATE ROLE还需要CONNECTION_ADMIN 或 SUPER权限。

(2)角色在创建时被锁定,没有密码,并且被分配默认的身份验证插件。

🎃授予及查看角色权限

1. 授予角色权限

使用GRANT将角色授予用户,即将权限的集合授予用户,语法格式为:

GRANT role [, role] ... TO user_or_role [, user_or_role] ... [WITH ADMIN OPTION]

注意:使用该语句,用户必须具有ROLE_ADMIN 或 SUPER权限,或是被授予了包含with ADMIN OPTION子句的GRANT语句的角色。若要授予具有SYSTEM_USER权限的角色,必须具有SYSTEM_USER权限。

2. 查看验证角色权限

要验证角色分配给用户的权限,使用 SHOW GRANTS查看权限。

基本语法格式为: SHOW GRANTS [FOR user_or_role] [USING role] ;

🎃激活角色

        在用户会话中,授予用户的角色可以是活动的或非活动的。如果授予的角色在会话中处于活动状态,则应用其权限;否则,不应用。要确定当前会话中哪些角色处于活动状态,可以使用CURRENT_ROLE()函数。

        默认情况下,将角色授予用户或在mandatory_roles系统变量值中命名用户不会自动导致该角色在用户会话中变为活动角色。例如,由于到目前为止,在前面的示例中rw_user1尚未激活任何角色,如果以rw_user1身份连接到服务器,可以使用CURRENT_ROLE()函数。服务器调用CURRENT_ROLE()函数,则结果为NONE(没有活动角色)。

        用户rw_user1登录后,输入语句:select current_role();则结果为NONE。

        若要指定每次用户连接到服务器并进行身份验证时应激活哪些角色,使用SET DEFAULT ROLE命令

 基本语法格式为: SET DEFAULT ROLE ALL TO 角色[,角色]…

🎃收回角色或角色权限

  • 正如角色可以授予用户一样,也可以从用户中收回角色。语法格式为:
  • REVOKE role FROM user;
  • 还可以对角色应用REVOKE来修改授予它的权限。这不仅影响角色本身,还影响授予该角色的任何用户。

🎃删除角色

删除角色要使用DROP ROLE命令。基本语法格式为:

DROP ROLE [IF EXISTS] role [, role ] ...

如:删除角色app_read和app_write。

SQL语句及执行结果为:

mysql> drop role app_read,app_write;

🎃角色和用户交换

        正如前面提到的SHOW GRANTS(显示用户或角色的权限)一样,用户和角色可以互换使用。可以将用户视为角色,并将该用户授予其他用户或角色。其效果就是将用户的权限和角色授予其他用户或角色。

        用户和角色的可互换性具有实际应用,例如在以下情况中:假设一个遗留应用程序开发项目在MySQL中的角色出现之前就开始了,因此,与项目关联的所有用户都被直接授予权限(而不是通过被授予角色而授予权限)。其中一个用户是最初被授予以下权限的开发人员用户: CREATE USER 'old_app_dev'@'localhost' IDENTIFIED BY 'old_app_devpass'; GRANT ALL ON old_app.* TO 'old_app_dev'@'localhost';

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

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

相关文章

大模型争霸的下一站:不仅是超越GPT-4,更是寻求模型之间的平衡应用

文 | 智能相对论 作者 | 沈浪 知名科学杂志《Nature》发表了一篇关于大模型规模参数大小争议的文章《In Al, is bigger always better?》——AI大模型,越大越好吗?随着大模型应用走向实践,这一问题不可避免地成为了当前AI行业发展的焦点与…

OpenGL 入门(二)—— 渲染摄像头采集的预览画面

本篇主要内容: 将摄像头采集到的图像通过 OpenGL 绘制到屏幕上FBO 离屏渲染 在开始上述流程前,我们有必要对 SurfaceTexture 做一个简单了解,因为 OpenGL 需要通过它获取要绘制的图像。 1、认识 SurfaceTexture SurfaceTexture 是 Androi…

(论文阅读-优化器)Selectivity Estimation using Probabilistic Models

目录 摘要 一、简介 二、单表估计 2.1 条件独立Condition Independence 2.2 贝叶斯网络Bayesian Networks 2.3 查询评估中的贝叶斯网络 三、Join选择性估计 3.1 两表Join 3.2 概率关系模型 3.3 使用PRMs的选择性估计 四、PRM构建 4.1 评分标准 4.2 参数估计 4.3 结…

堡垒机——网络技术手段

目录 一、简介 1.什么是跳板机 2.跳板机缺陷 3.什么是堡垒机 4.为什么要使用堡垒机 4.1堡垒机设计理念 4.2堡垒机的建设目标 4.3堡垒机的价值 4.4总结 5.堡垒机的分类 6.堡垒机的原理 7.堡垒机的身份认证 8.堡垒机的运维方式常见有以下几种 9.堡垒机其他常见功能…

基于springboot+vue+Mysql的在线动漫信息平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

大数据分析入门之10分钟掌握GROUP BY语法

前言 书接上回大数据分析入门10分钟快速了解SQL。 本篇将会进一步介绍group by语法。 基本语法 SELECT column_name, aggregate_function(column_name) FROM table_name GROUP BY column_name HAVING condition假设我们有students表,其中有id,grade_number,class…

网络文件共享

存储类型分三类 直连式存储:DAS存储区域网络:SAN网络附加存储:NAS 三种存储架构的应用场景 DAS虽然比较古老了,但是还是很适用于那些数据量不大,对磁盘访问速度要求较高的中小企业SAN多适用于文件服务器&#xff0c…

C/C++ BM33 二叉树的镜像

文章目录 前言题目解决方案一1.1 思路阐述1.2 源码 总结 前言 镜像说的好听,无非就是换下节点。 题目 操作给定的二叉树,将其变换为源二叉树的镜像。 数据范围:二叉树的节点数 0 ≤ n ≤ 1000 0≤n≤1000 0≤n≤1000, 二叉树每…

华为ensp中USG6000V防火墙双机热备VRRP+HRP原理及配置

作者主页:点击! ENSP专栏:点击! 创作时间:2024年5月6日20点26分 华为防火墙双机热备是一种高可用性解决方案,可以将两台防火墙设备组成一个双机热备组,实现主备切换。当主用防火墙出现故障时&…

景源畅信:抖音运营做什么工作内容?

在如今这个信息爆炸的时代,抖音已经成为了人们生活中不可或缺的一部分。无论是消磨时间、获取信息还是展示自我,抖音都扮演着重要的角色。那么,作为抖音运营,他们需要做些什么呢? 一、内容策划与制作 抖音运营的首要任务就是内容…

【动态规划】路径问题

1.不同路径 不同路径 思路&#xff1a; 状态表示 状态转移方程 class Solution { public:int uniquePaths(int m, int n) {// 创建dp表// 初始化// 填表// 返回值vector<vector<int>> dp(m 1, vector<int>(n 1));dp[0][1] 1;for(int i 1; i < m; i…

【数据结构】C++语言实现栈(详细解读)

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

AI预测体彩排3第3套算法实战化赚米验证第2弹2024年5月6日第2次测试

由于今天白天事情比较多&#xff0c;回来比较晚了&#xff0c;趁着还未开奖&#xff0c;赶紧把预测结果发出来吧~今天是第2次测试~ 2024年5月6日排列3预测结果 6-7码定位方案如下&#xff1a; 百位&#xff1a;2、3、1、5、0、6 十位&#xff1a;4、3、6、8、0、9 个位&#xf…

4.任务创建和删除的API函数

一、简介 二、动态创建任务函数:xTaskCreate() 此函数用于使用动态的方式创建任务&#xff0c;任务的任务控制块以及任务的栈空间所需的内存&#xff0c;均由 FreeRTOS 从 FreeRTOS 管理的堆中分配&#xff0c;若使用此函数&#xff0c;需要在 FreeRTOSConfig.h 文件 中将宏 c…

【智能算法】PID搜索算法(PSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2023年&#xff0c;Y Gao受到PID控制理论启发&#xff0c;提出了PID搜索算法&#xff08;PID-based Search Algorithm, PSA&#xff09;。 2.算法原理 2.1算法思想 PID算法是控制领域的…

安卓应用开发(一):工具与环境

开发工具 Android Studio&#xff0c;用于开发 Android 应用的官方集成开发环境 (IDE)。包括以下功能&#xff1a; 基于Gradle的构建系统 gradle是一个项目构建工具&#xff0c;将源工程打包构建为apk 安卓模拟器统一环境代码编辑模拟器实时更新Github集成Lint功能&#xff0…

4+1视图,注意区分类图与对象图

注意区分类图和对象图。对象图标记的是对象名&#xff0c;命名形式 对象名:类名&#xff0c;或者:类名。这里没有出现冒号&#xff0c;表示的是类图。 对象图(object diagram)。 对象图描述一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一…

数据结构十一:数组相关经典面试题

本篇博客详细介绍分析数组/顺序表常见的面试题&#xff0c;对于前面所学知识进行一个巩固&#xff0c;同时介绍一些力扣刷题中的一些概念&#xff1a;如&#xff1a;输出型参数等&#xff0c;在刷题中培养自己的编程思维&#xff0c;掌握常见的编程套路&#xff0c;形成题感&am…

嵌入式Linux学习第二天

今天学习linuxC编程。首先要熟悉linux下编写c程序的过程。 编写程序Hello World! 首先创建存放程序的文件夹&#xff0c;如下图所示&#xff1a; 接下来在创建一个文件夹来保存这节要编写的代码。指令&#xff1a;mkdir 3.1 接下来我们要设置VIM编辑器的一些配置&#xff0…

自定义类型②③——联合体和枚举

自定义类型②③——联合体和枚举 1.联合体1.1 联合体类型的声明1.2 联合体的特点1.3 相同成员结构体和联合体的对比1.4 联合体大小的计算1.5 联合体的应用①1.5 联合体的应用② 2. 枚举2.1 枚举类型的声明2.2 枚举类型的特点2.3 枚举的优点 1.联合体 1.1 联合体类型的声明 关…