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

news2024/11/19 10:32:17

💻博主现有专栏:

                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.coloradmin.cn/o/1636911.html

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

相关文章

PotatoPie 4.0 实验教程(33) —— FPGA实现摄像头视频图像叠加

链接直达 https://item.taobao.com/item.htm?ftt&id776516984361 什么是视频水印? 视频水印就是图像叠加,跟画中画,或者是OSD是一样的原理,都是在视频的行场数据流上进行替换操作,比如叠加可以直接用水印图的数…

【Python小练】求斐波那契数列第n个数

题目 输出斐波那契数列第n个数。 分析 首先我们要知道,斐波那契数列,这个数列从第三位开始等于前两个数的和,要知道数列第n个数(n>2),就要知道其前两相的值,着就需要用到递归了。来看一下吧…

Java面试重点之反射机制

一、 反射是什么? 允许程序在运行时查询和操作对象的类型信息。通过反射,程序能够在运行时获取对象的类定义信息,如类的名称、方法、字段、注解等,并且可以动态地调用对象的方法或访问其字段,而无需在编译时具体知道对…

【LAMMPS学习】八、基础知识(5.3)Body particles体粒子

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

C语言:数据结构(双向链表)

目录 1、双向链表的结构2、顺序表和双向链表的优缺点分析3、双向链表的实现 1、双向链表的结构 注意:这⾥的“带头“跟前面我们说的“头节点”是两个概念,实际前面的在单链表阶段称呼不严谨,但是为了更好的理解就直接称为单链表的头节点。 带…

上位机开发PyQt(五)【Qt Designer】

PyQt5提供了一个可视化图形工具Qt Designer,文件名为designer.exe。如果在电脑上找不到,可以用如下命令进行安装: pip install PyQt5-tools 安装完毕后,可在如下目录找到此工具软件: %LOCALAPPDATA%\Programs\Python\…

2024人工智能“百模大战“,竞争格局分析

中国“百模大战”竞争格局分析 大模型是一个重资源禀赋和高进入门槛的赛道,“百模大战”是一场重投入和高消耗的持久战役。“百模大战”的上半场是资源和技术的碰撞,入局企业需要长久的资源支持获得高密度的人才、高质量的数据和大规模的算力&#xff0c…

Vue.js课后练习(登录注册和大小比较)

第一题 请编写登录页面和注册页面&#xff0c;通过动态组件实现动态切换页面中显示的组件&#xff0c;效果如图1和图2所示。 图1 登录页面 图2 注册页面 代码&#xff1a; my.vue代码: <template>登录 </template><script setup> </script><st…

再谈有效地访问Github

文章目录 1. 知识回顾2. 问题描述3. 问题解决3.1 Mac系统3.2 Windows系统4. 内容总结1. 知识回顾 我们在之前的内容中介绍过如何有效地访问Github。如果大家忘记的话可以点击这里查看。之前的内容主要偏重于问题的分析和解决的思路,有些朋友看了后还是不清楚如何解决问题。 …

半监督节点分类:标签传播和消息传递

基础概念回顾 传统图机器学习的特征工程——节点层面&#xff0c;连接层面&#xff0c;全图层面 节点层面&#xff1a;信用卡欺诈 连接层面&#xff1a;推荐可能认识的人 全图层面&#xff1a;预测分子结构 半监督节点分类 半监督节点分类&#xff1a;用已知标签节点预测未…

【Java EE】多线程(二)Thread 类与常用方法

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

低代码工业组态数字孪生平台

2024 两会热词「新质生产力」凭借其主要特征——高科技、高效能及高质量&#xff0c;引发各界关注。在探索构建新质生产力的重要议题中&#xff0c;数据要素被视为土地、劳动力、资本和技术之后的第五大生产要素。数据要素赋能新质生产力发展主要体现为&#xff1a;生产力由生产…

linux安装Redis 7.2.4笔记

一.保姆级安装 1.下载Redis 7.2.4安装包 sudo wget https://download.redis.io/releases/redis-7.2.4.tar.gz2.解压&#xff0c;可以指定 sudo tar -zvxf redis-7.2.4.tar.gz 3.检测并安装 GCC 编译器&#xff1a; yum 是基于 Red Hat 的 Linux 发行版&#xff08;如 CentOS、…

问卷新项目新玩法,一个2-5元,零基础,日赚50-200元零花钱,适合宝妈

问卷调研是许多机构或企业为了获取大数据技术结论&#xff0c;进行抽样调查&#xff0c;进而针对特定人群进行付费调查个人行为。问卷调查内容通常涉及新产品&#xff0c;例如通过比较不同类别的商品&#xff0c;展示某些产品的优势和劣势。我们都喜欢某款手机&#xff0c;究竟…

Docker在linux安装步骤超详细

官网 Install Docker Engine on CentOS | Docker Docs yum -y install gcc yum -y install gcc-c 安装工具 sudo yum install -y yum-utils 设置国内的镜像 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yu…

【配置】Docker搭建JSON在线解析网站

云服务器打开端口8787 连接上docker运行 docker run -id --name jsonhero -p 8787:8787 -e SESSION_SECRETabc123 henryclw/jsonhero-webhttp://ip:8787访问 Github&#xff1a;地址

AutoCAD 2025 for mac/win:设计未来,触手可及

在数字化时代&#xff0c;设计不再局限于纸笔之间&#xff0c;而是跃然于屏幕之上&#xff0c;AutoCAD 2025正是这一变革的杰出代表。无论是Mac用户还是Windows用户&#xff0c;AutoCAD 2025都以其卓越的性能和出色的用户体验&#xff0c;成为了CAD设计绘图领域的佼佼者。 Aut…

Linux修改文件权限命令 chmod

【例子引入】 以下面命令为例&#xff1a; chmod 777 Random.py 当写入下面名为Random.py的代码后&#xff1a; 如果直接运行&#xff0c;会显示权限不够 当输入 chmod 777 Random.py 更改权限后&#xff0c;才能够正常运行 在终端中输入 这条命令是关于Linux或Unix-like系…

一周学会Django5 Python Web开发 - Django5 ORM数据库事务

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计50条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…