mysql 存储过程权限
来源:互联网 发布:没恋爱知乎 编辑:程序博客网 时间:2024/04/25 04:35
执行存储过程时,出现如下错误:
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.
at com.MySQL.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.DatabaseMetaData.getCallStmtParameterTypes(DatabaseMetaData.java:1616)
at com.mysql.jdbc.DatabaseMetaData.getProcedureColumns(DatabaseMetaData.java:4009)
at com.mysql.jdbc.CallableStatement.determineParameterTypes(CallableStatement.java:702)
at com.mysql.jdbc.CallableStatement.<init>(CallableStatement.java:513)
at com.mysql.jdbc.Connection.parseCallableStatement(Connection.java:4536)
at com.mysql.jdbc.Connection.prepareCall(Connection.java:4610)
at com.mysql.jdbc.Connection.prepareCall(Connection.java:4584)
经过查阅资料得知,JDBC在调用存储过程时不光用户要有execute的权限,还需要对mysql.proc具有访问权限。否则它无法访问metadata。有两种解决方法:
一.给数据库连接设置一个noAccessToProcedureBodies属性,属性值为true,示例如下:
网上说设置noAccessToProcedureBodies=true会带来一些影响(未经考证):
1. 调用存储过程时,将没有类型检查,设为字符串类型,并且所有的参数设为int类型,但是在调用registerOutParameter时,不抛出异常。
2. 存储过程的查询结果无法使用getXXX(String parameterName)的形式获取,只能通过getXXX(int parameterIndex)的方式获取。
二.给数据库用户赋权,赋执行mysql.proc表的select权限,示例如下:
GRANT SELECT ON mysql.proc TO 'user'@'localhost';
- MySQL存储过程权限
- mysql 存储过程权限
- MySQL 设置存储过程 权限认证
- mysql 创建存储过程权限问题
- MySQL 用户执行存储过程的权限
- MySQL 用户执行存储过程的权限
- mysql执行存储过程权限的问题
- mysql存储过程中定义权限
- MySQL用户执行存储过程的权限
- java调用mysql存储过程报权限方面错误
- [MySQL] 存储过程、函数、触发器和视图的权限检查
- [MySQL] 存储过程、函数、触发器和视图的权限检查
- JDBC连接执行MySQL存储过程报权限错误
- JDBC连接执行 MySQL 存储过程报权限错误
- (原)mysql存储过程的权限 definer invoker
- mysql给函数,存储过程权限的问题
- mysql中如何分配存储过程的权限
- mysql存储过程、视图等的权限问题
- PAT B1021. 个位数统计
- hbase的理论
- JavaScript中let和var定义变量的区别
- fabric 参照网址
- android自定义打对勾的连续签到效果
- mysql 存储过程权限
- sharepoint 2013网站集被锁定只读,管理中心无法解锁的解决方法。
- 20170722Windows12_1_虚拟内存
- ROS IDE
- Leetcode 643. Maximum Average Subarray I 最大平均区间 解题报告
- SVN创建分支合并分支传服务器
- Socket长连接之Android Studio运行Java程序
- Linux_入门 远程连接访问主机
- JAVA成员变量和静态变量的区别