JDBC连接执行MySQL存储过程报权限错误
在java中通过JDBC连接MySQL执行存储过程时报错:
java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted, configure connection with "noAccessToProcedureBodies=true" to have driver generate parameters that represent INOUT strings irregardless of actual parameter types.
经过查阅资料得知,JDBC在调用存储过程时不光用户要有execute的权限,还需要对mysql.proc具有访问权限。否则它无法访问metadata。有两种解决方法:
一.给数据库连接设置一个noAccessToProcedureBodies属性,属性值为true,示例如下:
jdbc:mysql://ipaddress:3306/test?noAccessToProcedureBodies=true
网上说设置noAccessToProcedureBodies=true会带来一些影响(未经考证):
1. 调用存储过程时,将没有类型检查,设为字符串类型,并且所有的参数设为in类型,但是在调用registerOutParameter时,不抛出异常。
2. 存储过程的查询结果无法使用getXXX(String parameterName)的形式获取,只能通过getXXX(int parameterIndex)的方式获取。
二.给数据库用户赋权,赋执行mysql.proc表的select权限,示例如下:
GRANT SELECT ON mysql.proc TO 'user'@'localhost';
参考资料:
- http://stackoverflow.com/questions/986628/mysql-java-cant-execute-stored-procedure
- http://space.itpub.net/18945822/viewspace-683363
- http://cau99.blog.51cto.com/1855224/348792
相关推荐
很简单的一个例子,介绍如何用mysql数据库存储本体 首先要安装好MySQL服务器,然后建立一个数据库,如OntologyDB。再建立一个用户如OntologyDBUser,并给予其对数据库OntologyDB的所有操作权限。然后下载MySQL的JDBC...
5.6 怎样处理没有提交/回卷(COMMIT / ROLLBACK) 6 MySQL 存取权限系统 6.1 权限系统做什么 6.2 MySQL用户名和口令 6.3 与MySQL服务器连接 6.4 使你的口令安全 6.5 MySQL 提供的权限 ...
+ 5.4.4 存储过程和触发器 + 5.4.5 外键(Foreign Keys) # 5.4.5.1 不使用外键的理由 + 5.4.6 视图(Views) + 5.4.7 '--'作为一个 注解的开始 o 5.5 MySQL 遵循什么标准? o 5.6 怎样处理没有提交/回卷(COMMIT ...
5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户管理 ...
MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,...
ROLLBACK) 6 MySQL 存取权限系统 6.1 权限系统做什么 6.2 MySQL用户名和口令 6.3 与MySQL服务器连接 6.4 使你的口令安全 6.5 MySQL 提供的权限 6.6 权限系统工作原理 6.7 ...
5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户管理 ...
5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户管理 ...
5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户...
5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户管理 ...
然而,为了实现快速、健壮和易用的目的,MySQL必须牺牲一部分灵活而强大的功能,如子查询、存储过程与触发器、外键、事物处理等。因而,MySQL在某些应用中缺乏灵活性,但这也使它对数据的处理速度较其它数据库服务器...
21.9 与存储过程和触发器有关的语言元素 第22章 MySQL工具和选项 22.1 概述 22.2 通用选项和配置文件 22.3 mysqld程序(服务器) 22.4 mysqld_safe脚本(启动MySQL服务器) 22.5 mysql_install_...
5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户...
MySQL提供了一系列安全措施,如用户账户管理、访问权限控制、SSL/TLS加密连接、审计日志等功能,确保数据的安全性和合规性。同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,...
假设Mysql安装在c:\根目录下,Database数据库也在C盘根目录下,启动MySQL Server,运行以下存储过程: c:\ c:\cd mysql c:\mysql\cd bin c:\mysql\bin\mysql mysql>create database lib; mysql>quit c:\mysql\bin\...
与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户...
5.7.4. 与MySQL服务器连接 5.7.5. 访问控制, 阶段1:连接核实 5.7.6. 访问控制, 阶段2:请求核实 5.7.7. 权限更改何时生效 5.7.8. 拒绝访问错误的原因 5.7.9. MySQL 4.1中的密码哈希处理 5.8. MySQL用户账户管理 ...
5.2 与MySQL服务器建立连接 5.3 MySQL Administrator 5.4 MySQL Query Browser 第6章 phpMyAdmin 6.1 phpMyAdmin的安装与配置 6.2 用户管理,保护MySQL 6.3 创建和编辑数据库 6.4 查看、插入和编辑...