mysql技术内幕总结篇 (一)存储程序和视图的安全性

2024-05-10 19:38

本文主要是介绍mysql技术内幕总结篇 (一)存储程序和视图的安全性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


本文只是阅读mysql技术内部后的总结

     

     4.5 存储程序和视图的安全性

 存储程序是一个将在未来的某个时刻执行的对象 视图也是如此。意味着实际执行的这些语句的用户有可能不知道创建者,服务器执行时应该使用哪个账户的权限?

默认情况下,服务器是使用创建者的账户权限

好处 : 编写的存储过程可以把数据表开发给无权直接访问它们的用户,开放程度由创建者控制

坏处 :如果存储过程有敏感数据,调用者将获得与定义者同样的数据访问权限。

定义存储过程or视图 可以在create语句使用一个DEFINER = account 明确指定该存储过程or View的定义者。mysql在执行时将使用该用户的权限去访问数据 example:

CREATE DEFINER = 'tony'@'localhost' PROCEDURE count_students() select count(*) from student;

definer 的value 可以是'user_name'@'host_name'  默认使用CURRENT_USER

对于视图 存储函数 存储过程 还可以给出 SQL SECURITY 选项 ,选项值是 DEFINER(定义者的权限执行) or INVOKER (以调用者的权限执行,只看自己能看到的)

SQL SECURITY INVOKER 最适合这样的场合 :你不想让存储程序或视图在执行时的权限多于调用者。例如 下面的视图将访问mysql的衣柜数据表 但只能以调用者的权限运行。这样一来如果调用者本人无权访问mysql.user表 即使执行这个视图也不会看到他不该看到的东西。

create SQL SECURITY INVOKER VIEW myvas select concat(User,'@',Host) as account, password from mysql.user;

触发器和事件是由服务器自动调用的 所以调用者的概念不适用于他们 不支持SQL SECURITY,总是以定义者的权限执行

若DEFINER账户不存在执行definer='tony'@'localhost'会抛出a error

这篇关于mysql技术内幕总结篇 (一)存储程序和视图的安全性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/977366

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2