iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 权限控制详解
  • 481
分享到

MySQL 权限控制详解

MySQL权限MySQL权限控制 2022-05-12 20:05:40 481人浏览 泡泡鱼
摘要

Mysql权限控制     作为一名DBA,想必大家对mysql中的权限都不陌生,Mysql中对于权限的控制分为三个层面: 全局性的管理权限,作用于整个MySQL实例级别 数

Mysql权限控制

    作为一名DBA,想必大家对mysql中的权限都不陌生,Mysql中对于权限的控制分为三个层面:

  • 全局性的管理权限,作用于整个MySQL实例级别
  • 数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上
  • 数据库对象级别的权限,作用于指定的数据库对象上(表、视图等)或 者所有的数据库对象上

    这里,我们将mysql中的所有权限列出来,最后给出一个特殊的案例来反应mysql权限控制中的一个小bug。首先来看权限列表,权限的顺序按照首字母的顺序进行排列:

•All/All Privileges
该权限代表全局或者全数据库对象级别的所有权限
•Alter
该权限代表允许修改表结构的权限,但必须要求有create和insert权限配合。
如果是rename表名,则要求有alter和drop原表,create和insert新表的权限
•Alter routine
该权限代表允许修改或者删除存储过程、函数的权限
•Create
该权限代表允许创建新的数据库和表的权限
•Create routine
该权限代表允许创建存储过程、函数的权限
•Create tablespace
该权限代表允许创建、修改、删除表空间和日志组的权限
•Create temporary tables
该权限代表允许创建临时表的权限
•Create user
该权限代表允许创建、修改、删除、重命名user的权限
•Create view
该权限代表允许创建视图的权限
•Delete
该权限代表允许删除行数据的权限
•Drop
该权限代表允许删除数据库、表、视图的权限,包括truncate table命令
•Event
该权限代表允许查询,创建,修改,删除MySQL事件
•Execute
该权限代表允许执行存储过程和函数的权限
•File
该权限代表允许在MySQL可以访问的目录进行读写磁盘文件操作,
可使用的命令包括load data infile,select ... into outfile,load file()函数
•Grant option
该权限代表是否允许此用户授权或者收回给其他用户你给予的权 限
•Index
该权限代表是否允许创建和删除索引
•Insert
该权限代表是否允许在表里插入数据,同时在执行analyze table,optimize table,repair table语句的时候也需要insert权限
•Lock
该权限代表允许对拥有select权限的表进行定,以防止其他链接对此表的读或写
•Process
该权限代表允许查看MySQL中的进程信息,比如执行showprocesslist,
•Reference
该权限是在5.7.6版本之后引入,代表是否允许创建外键
•Reload
该权限代表允许执行flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启日志文件并刷新所有的表
•Replication client
该权限代表允许执行show master status,show slave status,show binary logs命令
•Replication slave
该权限代表允许slave主机通过此用户连接master以便建立主从复制关系
•Select
该权限代表允许从表中查看数据,而且select权限在执行update/delete 语句中含有where条件的情况下也是需要的
•Show databases
该权限代表通过执行show databases命令查看所有的数据库名
•Show view
该权限代表通过执行show create view命令查看视图创建的语句mysqladmin processlist, show engine等命令
•Shutdown
该权限代表允许关闭数据库实例,执行语句包括mysqladmin shutdown
•Super
该权限代表允许执行一系列数据库管理命令,包括kill强制关闭某个连接 命令,change master to创建复制关系命令,以及create/alter/drop server等命 令
•Trigger
该权限代表允许创建,删除,执行,显示触发器的权限
•Update
该权限代表允许修改表中的数据的权限
•Usage
该权限是创建一个用户之后的默认权限,其本身代表连接登录权限

权限系统表

    权限存储在mysql库的user,db, tables_priv, columns_priv, and procs_priv这几个系统表中,待MySQL实例启动后就加载到内存中

• User表:

存放用户账户信息以及全局级别(所有数据库)权限,决定了 来自哪些主机的哪些用户可以访问数据库实例,如果有全局权限则意味
着对所有数据库都有此权限
• Db表:

存放数据库级别的权限,决定了来自哪些主机的哪些用户可以访 问此数据库
• Tables_priv表:

存放表级别的权限,决定了来自哪些主机的哪些用户可以 访问数据库的这个表
• Columns_priv表:

存放列级别的权限,决定了来自哪些主机的哪些用户可 以访问数据库表的这个字段
• Procs_priv表:

存放存储过程和函数级别的权限

MySQL修改权限之后的生效方法

• 执行Grant,revoke,setpassWord,renameuser命令修改权限之后,MySQL会自动将修改后的权限信息同步加载到系统内存中
• 如果执行insert/update/delete操作上述的系统权限表之后,则必须再执行刷 新权限命令才能同步到系统内存中,刷新权限命令包括:flush privileges/mysqladmin flush-privileges/mysqladmin reload
• 如果是修改tables和columns级别的权限,则客户端的下次操作新权限就会生效
• 如果是修改database级别的权限,则新权限在客户端执行use database命令后生效
• 如果是修改global级别的权限,则需要重新创建连接新权限才能生效
• --skip-grant-tables可以跳过所有系统权限表而允许所有用户登录,只在特殊情况下暂时使用

赋予权限与回收权限

    赋予权限的时候通常使用grant语句,以查询为例,具体如下:

grant select on db_name.table_name to user@host;

其中,如果对一个账号授予数据库中的所有表的权限,需要将上述语句中的table_name改为*,如果对数据库中所有数据库中的所有表授予权限,则需要将db_name和table_name都改为*

     回收权限通常使用revoke语法,它的使用方法如下,以查询为例:

revoke select on db_name.table_name from user@host;

需要注意的是,它与grant不同之处在于语句最后面由to改为了from。

一个特殊例子

    今天在处理线上业务的时候,有这样一个开权限的需求,想从workbench客户端查看存储过程,我当时的第一反应就是直接给execute权限,结果给了execute权限之后,业务方反应还是无法查看存储过程,我过去看了下,连接上数据库之后,显示如下:


mysql> show databases;
+--------------------+
| Database   |
+--------------------+
| infORMation_schema |
| AAA    |
+--------------------+
2 rows in set (0.00 sec)
mysql> use AAA
Database changed
mysql> show procedure status\G
*************************** 1. row ***************************
     Db: CVS
    Name: ba_get_grow
    Type: PROCEDURE
    Definer: dba_admin@127.0.0.1
   Modified: 2019-02-26 ::
    Created: 2019-02-26 ::
  Security_type: DEFINER
    Comment:
character_set_client: utf8
collation_connection: utf8_general_ci
 Database Collation: utf8_general_ci

mysql> show create procedure ba_get_grow\G
*************************** 1. row ***************************
   Procedure: ba_get_grow
   sql_mode:
 Create Procedure: NULL
character_set_client: utf8
collation_connection: utf8_general_ci
 Database Collation: utf8_general_ci
 row in set (0.00 sec)

    可以看到,第29行的create procedure的值是NULL,而没有显示出来procedure的内容,当然也就无法查看procedure了,这种情况怎么办呢?

    想到了mysql.proc表里面包含存储过程的信息,于是通过下面的方法给了mysql.proc表一个只读的权限:


mysql@127.0.0.1:(none) 22:35:07>>grant select on `mysql`.proc to 'user'@'host';
Query OK, 0 rows affected (0.00 sec)

    再次登录客户端,可以发现存储过程的内容已经可以看到了,如下:


mysql> show databases;
+--------------------+
| Database   |
+--------------------+
| information_schema |
| AAA    |
+--------------------+
2 rows in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database   |
+--------------------+
| information_schema |
| AAA    |
| mysql    |
+--------------------+
3 rows in set (0.00 sec)

mysql> show create procedure ba_get_grow\G
*************************** 1. row ***************************
   Procedure: ba_get_grow
   sql_mode:
 Create Procedure: CREATE DEFINER=`dba_admin`@`127.0.0.1` PROCEDURE `ba_get_grow`(
 in p_table_info varchar(),
 out out_retmsg varchar()
)
BEGIN
 XXXXXXXXX
 XXXXXXXXX
 XXXXXXXXX
 XXXXXXXXX
END
character_set_client: utf8
collation_connection: utf8_general_ci
 Database Collation: utf8_general_ci
 row in set (0.00 sec)

以上就是MySQL 权限控制详解的详细内容,更多关于MySQL 权限控制的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 权限控制详解

本文链接: https://www.lsjlt.com/news/10234.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue权限指令控制权限详解
    目录第一种-自定义权限指令第二种:v-if自定义控制最后说明在日常的开发过程中,我们除了使用Vue已有的指令之外,还需自定义指令,需要对DOM节点进一步操作。 在后台系统中,最常用的...
    99+
    2024-04-02
  • PHP权限控制修饰符详解:全面了解常用的权限控制修饰符
    PHP权限控制修饰符详解:全面了解常用的权限控制修饰符,需要具体代码示例 在 PHP 开发中,权限控制是一个非常重要的概念,能够有效地保证代码的安全性和可维护性。而在权限控制中,修饰符则是必不可少的元素。在 PHP 中具有三种修...
    99+
    2024-01-19
    PHP 权限控制 修饰符
  • SpringBoot详解shiro过滤器与权限控制
    目录shiro过滤器权限控制动态配置权限shiro过滤器 首先从客户端发来的所有请求都经过Shiro过滤器,如果用户没有认证的都打回去进行认证,认证成功的,再判断是否具有访问某类资源...
    99+
    2024-04-02
  • MongoDB 3.0+安全权限访问控制详解
    1、启动没有访问控制的MongoDB服务 sudo service mongod start 2、连接到实例 mongo --port 27017 指定额外的命令行选项来连接Mongo shell到部...
    99+
    2024-04-02
  • SpringSecurity权限控制
    目录 1、Spring Security简介 2、Spring Security实现权限 2.1、Spring Security入门 2.1.1、修改pom文件 2.1.2、添加配置类 2.2、用户认证 2.2.1、自定义组件 2.2.2、...
    99+
    2023-09-05
    spring java 后端
  • mysql 中怎么实现权限控制
    本篇文章给大家分享的是有关mysql 中怎么实现权限控制,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。概述mysql权限控制在不同的上下文和不...
    99+
    2024-04-02
  • MySQL权限控制的简单介绍
    这篇文章主要介绍“MySQL权限控制的简单介绍”,在日常操作中,相信很多人在MySQL权限控制的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL权限控制的简单...
    99+
    2024-04-02
  • MySQL中如何限制用户权限和访问控制
    在MySQL中,可以通过以下几种方法限制用户权限和访问控制: 使用GRANT语句授予或撤销用户权限。GRANT语句允许管理员为用...
    99+
    2024-03-06
    MySQL
  • kafkatopic权限控制(设置删除权限)
    Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。...
    99+
    2024-04-02
  • Discuz权限控制:了解如何设置阅读权限
    Discuz权限控制:了解如何设置阅读权限,需要具体代码示例 在Discuz论坛中,权限控制是非常重要的一项功能,可以帮助管理员精确地控制用户的操作和访问权限,保护论坛的安全和秩序。其...
    99+
    2024-03-10
    权限控制 discuz 阅读权限
  • Nestjs自定义注解实现接口权限控制详解
    目录正文定义角色枚举声明自定义注册(装饰器)实现角色守卫 RolesGuard在 providers 中引入 RolesGuard使用注解正文 当业务接口开发完成之后,正式上线之前还...
    99+
    2022-12-08
    Nestjs注解接口权限 Nestjs自定义注解权限控制
  • 详解如何在项目中应用SpringSecurity权限控制
    目录1、Spring Security环境准备2、实现认证和授权3、在控制器上实现注解鉴权4、请求获取当前登录的用户名信息5、用户退出要进行认证和授权需要前面课程中提到的权限模型涉及...
    99+
    2024-04-02
  • Vuerouter的addRoute方法实现控制权限方法详解
    目录路由分为静态路由和动态路由静态路由和动态路由的优缺点动态路由实现思路动态路由遇到的问题与解决方式路由分为静态路由和动态路由 静态路由和动态路由的优缺点 1、中大型项目,采用的都是...
    99+
    2024-04-02
  • 详解springboot springsecuroty中的注销和权限控制问题
    目录1 账户注销1.1 在SecurityConfig中加入开启注销功能的代码1.2 在index.html 添加注销的按钮1.3 启动项目测试2 权限控制2.1 导入springs...
    99+
    2024-04-02
  • SpringSecurity怎样使用注解控制权限
    一般的系统在权限设计上,都会分为角色、权限(RDBC),复杂一点的可能会有用户组、组织之类的概念。 用户的权限是写死的,对应于后台的接口或者资源,是没办法改变的,一般不对用户开放修改...
    99+
    2024-04-02
  • Python权限控制模块Casbin
    目录简介为什么我要使用 Casbin?PyCasbin 模块的使用例子权限测试简介 Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。 casbi...
    99+
    2024-04-02
  • SpringBoot整合Security实现权限控制框架(案例详解)
    目录一、前言二、环境准备2.1、数据库表2.2、导入依赖2.3、配置文件2.4、WebSecurityConfig Security的主要配置类:2.5、Security身份验证2....
    99+
    2024-04-02
  • mysql中DCL常用的用户和权限控制
    目录前言一、用户控制管理二、权限控制管理三、 数据库权限列表前言 本文总结了mysql中DCL,常用的一些权限控制,后续使用到其他会继续补充。 一、用户控制管理 创建用户 creat...
    99+
    2024-04-02
  • 如何理解ACL的访问权限控制
    如何理解ACL的访问权限控制,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在普通权限中,Linux用户对文件只有三种身份,就是属主、属组和其他人;每种用户身份拥...
    99+
    2023-06-05
  • 详解vue各种权限控制与管理的实现思路
    本篇文章给大家带来了关于vue的相关知识,其中主要详细介绍了vue各种权限控制与管理的实现思路,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。一、 菜单权限菜单权限:控制用户在系统中能够看到哪些菜单项菜单权限指的就是后台系统中的左侧的菜...
    99+
    2023-05-14
    前端 Vue.js Vuex
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作