`
hideto
  • 浏览: 2674986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL存储程序权限控制

阅读更多
MySQL存储程序权限控制

MySQL5.0引入了一些管理存储程序的权限:
CREATE ROUTINE: 允许用户创建新的存储程序
ALTER ROUTINE: 允许用户修改security mode/SQL mode/comment
EXECUTE: 允许用户只需存储程序


给用户赋予权限:
GRANT CREATE ROUTINE ON mydatabase.* TO sp_creator;
GRANT ALTER ROUTINE ON mydatabase.* TO sp_creator;
GRANT EXECUTE ON mydatabase.* TO sp_creator;
GRANT EXECUTE ON PROCEDURE mydatabase.test1 TO sp_creator;


存储程序的执行安全模式:
SQL SECURITY DEFINER: 默认模式,存储程序的定义者才能执行
SQL SECURITY INVOKER: 调用者都可以执行,但是权限细粒度的控制转交到存储程序里的SQL语句的执行权限


存储程序里封装访问权限的例子:
CREATE PROCEDURE sp_employee_list(in_department_id DECIMAL(8,0)
    SQL SECURITY DEFINER READS SQL DATA
BEGIN
    DECLARE l_user_name VARCHAR(30);
    DECLARE l_not_found INT DEFAULT 0;
    DECLARE l_department_name VARCHAR(30);
    DECLARE l_manager_id INT;

    DECLARE user_csr CURSOR FOR
        SELECT d.department_name, e.manager_id
            FROM departments d JOIN employees e USING(department_id)
            WHERE db_user=l_user_name;

    DECLARE CONTINUE HANDLER FOR  NOT FOUND SET l_not_foun=1;

    /* Strip out the host from the user name */
    SELECT SUBSTR(USER(),1,INSTR(USER(), '@')-1)
        INTO l_user_name;

    OPEN user_csr;
    FETCH user_csr INTO l_department_name, l_manager_id;
    CLOSE user_csr;

    IF l_department_name='PAYROLL' OR l_manager_id IN (0, 1) THEN
        SELECT surname, firstname, salary
            FROM employees
            WHERE department_id=in_department_id
            ORDER BY employee_id;
    ELSE
        /* Not authorized to see salary */
        SELECT surname, firstname, 'XXXXXXXX' AS salary
            FROM employees
            WHERE department_id=in_department_id
            ORDER BY employee_id;
    END IF;

END;
分享到:
评论

相关推荐

    mysql安装程序包

    标题“mysql安装程序包”指的是MySQL的安装程序文件,用于在计算机上部署MySQL服务器。这个特定的版本是"mysql-5.5.12-win32.msi",意味着它是针对Windows 32位系统的版本。5.5.12是MySQL的一个具体发行版本,发布于...

    mysql存储过程教程

    - 安全性:可以通过权限控制限制对数据库的直接访问。 - 减少网络流量:存储过程的调用比单独的SQL语句更高效。 缺点: - 可读性和维护性:如果存储过程过于复杂,可能难以理解和维护。 - 跨平台问题:不同数据库...

    全国计算机等级考试二级MySQL数据库程序设计大纲(2018版)

    全国计算机等级考试二级MySQL数据库程序设计大纲(2018版)涵盖了对数据库基础、MySQL数据库操作、编程、管理与维护以及应用开发方面的全面要求,目的是检验应试者的数据库知识和技能。以下是该大纲中包含的知识点...

    Mysql手册20-存储过程和函数

    本部分详细介绍了存储程序和函数的各个方面,包括它们的创建、语法、权限控制以及与性能优化相关的概念。 首先,存储程序和函数是可以通过名称在MySQL服务器上被调用的预定义语句集。存储程序可以是存储过程或函数...

    springboot+security+jwt+mybaits-plus+mysql实现权限管理

    在这个项目中,Spring Security被用来进行用户登录验证、权限控制和访问限制,确保只有经过身份验证和授权的用户才能访问特定资源。 3. JWT:JWT是一种轻量级的身份验证机制,用于在不同域之间传递信息。在Spring ...

    Java实现调用MySQL存储过程详解

    总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行存储过程和处理结果。这使得开发者能够在Java应用中灵活地利用数据库提供的强大功能,实现更高效的数据处理。

    mysql5.5安装程序

    - **启动服务**:安装完成后,MySQL会作为Windows服务启动,可以通过服务管理工具查看和控制MySQL服务。 3. **易安装**: MySQL 5.5的安装程序设计得相对简单,适合没有数据库经验的初学者。向导式的界面使得安装...

    MySQL存储过程学习

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复使用的代码块,以提高数据处理的效率和应用程序的性能。在这个"MySQL存储过程学习"的主题中,我们将深入探讨...

    MySQL存储过程.pdf

    MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一组SQL语句并封装成一个可重复使用的对象。这种技术在处理复杂的业务逻辑、提高数据操作效率以及减少网络传输时非常有用。本文件“MySQL存储...

    MySQL逻辑架构-存储引擎-用户权限密码详解

    在用户权限密码方面,MySQL数据库系统提供了灵活的用户账户管理和权限控制机制。管理员可以通过SQL命令来创建、修改和删除用户账户,以及为用户分配不同的权限。修改账户密码是一个基本的数据库安全管理操作,可以...

    mysql创建存储过程

    - **ALTER ROUTINE** 权限:修改或删除存储程序需要此权限,创建者自动获得此权限。 - **EXECUTE** 权限:执行存储程序需要此权限,创建者自动获得此权限。 - **SQL SECURITY** 特性:默认为 **DEFINER**,这意味着...

    计算机二级mysql数据库程序设计练习题(二).docx

    计算机二级MySQL数据库程序设计练习题主要涵盖了MySQL的基础概念、语法以及使用方法,这些知识点对于理解和操作MySQL数据库至关重要。以下是对部分题目涉及知识点的详细解释: 1. 存储过程的调用:存储过程是预编译...

    MySQL 64位安装程序

    MySQL 64位安装程序是专为64位操作系统设计的数据管理系统安装包,它提供了在64位Windows系统上安装MySQL服务器的完整流程。MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),由Oracle公司维护,适用于各种...

    MySQL命令行实用程序.pdf

    1. **mysqld**:这是MySQL的核心服务,作为SQL后台程序运行,负责处理客户端的请求,管理数据存储和检索。 2. **mysqld_safe**:这是一个服务器启动脚本,用于更安全地启动mysqld。它能监控服务器运行,当出现错误...

    精通MySQL存储过程和函数

    以上内容概述了MySQL存储过程和函数的基本概念、创建方法、变量定义、条件处理、流程控制、游标使用、预处理语句以及常见问题。通过这些知识点的学习,可以帮助开发者更好地理解和应用MySQL存储过程和函数,从而提高...

    PHP+MySQL练习程序-仓库管理

    其次,MySQL是一款高效、可靠的关系型数据库管理系统,是许多Web应用程序的数据存储解决方案。在仓库管理系统中,MySQL可能用于存储商品信息、库存量、供应商信息等数据。开发者可以创建各种表来对应不同的实体,如...

    MYSQL简化版易语言管理程序

    安装过程中可能涉及配置服务器参数、设置数据存储位置、创建系统用户和权限分配等步骤;卸载则通常包括停止数据库服务、删除相关文件和注册表项。 3. **数据库服务控制**:启动或停止MySQL数据库服务是数据库日常...

    MySQL存储过程系统学习资料

    - **安全性**:可以通过权限控制限制对存储过程的访问,而不是直接访问数据库表。 - **减少网络流量**:客户端只需要发送调用存储过程的命令,而不是大量的SQL语句。 在"MySQL存储过程.doc.doc"文档中,可能会详细...

    MySQL存储过程基础教程.pdf

    ### MySQL存储过程基础知识点 #### 1. 存储过程的定义和示例 存储过程是存储在MySQL服务器上的预编译的SQL代码段,它能够接受参数、执行一系列的SQL语句和流程控制语句。存储过程可以提高数据库操作的效率,同时...

Global site tag (gtag.js) - Google Analytics