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-5.5.12-win32.msi",意味着它是针对Windows 32位系统的版本。5.5.12是MySQL的一个具体发行版本,发布于...
- 安全性:可以通过权限控制限制对数据库的直接访问。 - 减少网络流量:存储过程的调用比单独的SQL语句更高效。 缺点: - 可读性和维护性:如果存储过程过于复杂,可能难以理解和维护。 - 跨平台问题:不同数据库...
全国计算机等级考试二级MySQL数据库程序设计大纲(2018版)涵盖了对数据库基础、MySQL数据库操作、编程、管理与维护以及应用开发方面的全面要求,目的是检验应试者的数据库知识和技能。以下是该大纲中包含的知识点...
本部分详细介绍了存储程序和函数的各个方面,包括它们的创建、语法、权限控制以及与性能优化相关的概念。 首先,存储程序和函数是可以通过名称在MySQL服务器上被调用的预定义语句集。存储程序可以是存储过程或函数...
在这个项目中,Spring Security被用来进行用户登录验证、权限控制和访问限制,确保只有经过身份验证和授权的用户才能访问特定资源。 3. JWT:JWT是一种轻量级的身份验证机制,用于在不同域之间传递信息。在Spring ...
总的来说,Java通过JDBC调用MySQL存储过程涉及到连接数据库、创建`CallableStatement`、执行存储过程和处理结果。这使得开发者能够在Java应用中灵活地利用数据库提供的强大功能,实现更高效的数据处理。
- **启动服务**:安装完成后,MySQL会作为Windows服务启动,可以通过服务管理工具查看和控制MySQL服务。 3. **易安装**: MySQL 5.5的安装程序设计得相对简单,适合没有数据库经验的初学者。向导式的界面使得安装...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一系列的SQL语句,形成一个可重复使用的代码块,以提高数据处理的效率和应用程序的性能。在这个"MySQL存储过程学习"的主题中,我们将深入探讨...
MySQL存储过程是数据库管理系统中的一种重要功能,它允许开发者预编译一组SQL语句并封装成一个可重复使用的对象。这种技术在处理复杂的业务逻辑、提高数据操作效率以及减少网络传输时非常有用。本文件“MySQL存储...
在用户权限密码方面,MySQL数据库系统提供了灵活的用户账户管理和权限控制机制。管理员可以通过SQL命令来创建、修改和删除用户账户,以及为用户分配不同的权限。修改账户密码是一个基本的数据库安全管理操作,可以...
- **ALTER ROUTINE** 权限:修改或删除存储程序需要此权限,创建者自动获得此权限。 - **EXECUTE** 权限:执行存储程序需要此权限,创建者自动获得此权限。 - **SQL SECURITY** 特性:默认为 **DEFINER**,这意味着...
计算机二级MySQL数据库程序设计练习题主要涵盖了MySQL的基础概念、语法以及使用方法,这些知识点对于理解和操作MySQL数据库至关重要。以下是对部分题目涉及知识点的详细解释: 1. 存储过程的调用:存储过程是预编译...
MySQL 64位安装程序是专为64位操作系统设计的数据管理系统安装包,它提供了在64位Windows系统上安装MySQL服务器的完整流程。MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),由Oracle公司维护,适用于各种...
1. **mysqld**:这是MySQL的核心服务,作为SQL后台程序运行,负责处理客户端的请求,管理数据存储和检索。 2. **mysqld_safe**:这是一个服务器启动脚本,用于更安全地启动mysqld。它能监控服务器运行,当出现错误...
以上内容概述了MySQL存储过程和函数的基本概念、创建方法、变量定义、条件处理、流程控制、游标使用、预处理语句以及常见问题。通过这些知识点的学习,可以帮助开发者更好地理解和应用MySQL存储过程和函数,从而提高...
其次,MySQL是一款高效、可靠的关系型数据库管理系统,是许多Web应用程序的数据存储解决方案。在仓库管理系统中,MySQL可能用于存储商品信息、库存量、供应商信息等数据。开发者可以创建各种表来对应不同的实体,如...
安装过程中可能涉及配置服务器参数、设置数据存储位置、创建系统用户和权限分配等步骤;卸载则通常包括停止数据库服务、删除相关文件和注册表项。 3. **数据库服务控制**:启动或停止MySQL数据库服务是数据库日常...
- **安全性**:可以通过权限控制限制对存储过程的访问,而不是直接访问数据库表。 - **减少网络流量**:客户端只需要发送调用存储过程的命令,而不是大量的SQL语句。 在"MySQL存储过程.doc.doc"文档中,可能会详细...
### MySQL存储过程基础知识点 #### 1. 存储过程的定义和示例 存储过程是存储在MySQL服务器上的预编译的SQL代码段,它能够接受参数、执行一系列的SQL语句和流程控制语句。存储过程可以提高数据库操作的效率,同时...