JDBC连接执行MySQL存储过程报权限错误

今天在测试项目的时候  突然就报了一个错出来。

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

eg:

jdbc:mysql://192.168.1.111:3306/test?noAccessToProcedureBodies=true 

网上说设置noAccessToProcedureBodies=true会带来一些影响(未经考证):

1. 调用存储过程时,将没有类型检查,设为字符串类型,并且所有的参数设为int类型,但是在调用registerOutParameter时,不抛出异常。

2. 存储过程的查询结果无法使用getXXX(String parameterName)的形式获取,只能通过getXXX(int parameterIndex)的方式获取。

二:给数据库用户赋权,赋执行mysql.proc表的select权限

eg:

GRANT SELECT ON mysql.proc TO ‘user‘@‘localhost‘;  
时间: 2024-08-11 09:41:27

JDBC连接执行MySQL存储过程报权限错误的相关文章

Mac环境下执行npm install报权限错误解决办法

1. 一般情况 sudo npm install 2. 特殊情况 npm install --unsafe -perm 3. 究极情况 sudo npm install --unsafe -perm 原文地址:https://www.cnblogs.com/similar/p/11247327.html

PHP多次调用Mysql存储过程报错解决办法

PHP多次调用Mysql数据库的存储过程会出现问题,主要问题为存储过程中执行多次SQL语句不能一一释放导致的,网上找了一些解决办法,比如使用 multi_query 然后一个一个释放,但是发现根本不适合我们的项目,我们使用CI框架写的,更多的是使用CI的数据库处理方法.所以只能另辟蹊径. 一次偶然,把Mysql链接方式改成了mysqli,两种不同的PHP连接mysql的扩展,官方在高版本中推荐使用mysqli,结果却奇迹般好了,使用Mysql长连接也行,天意么? PHP多次调用Mysql存储过程

MYSQL启动报1067错误,系统日志中是“服务 mysql 意外停止” Mysql日志中则是:“Plugin \'FEDERATED\' is disabled”

MYSQL启动报1067错误,系统日志中是"服务 mysql 意外停止" Mysql日志中则是:"Plugin \'FEDERATED\' is disabled" 错误的具体内容是: 121012 11:35:03 [Note] Plugin 'FEDERATED' is disabled. 121012 11:35:03  InnoDB: Error: unable to create temporary file; errno: 2 121012 11:35:

mysql数据库初始化(启动mysql时候报很多错误,初始化)

./mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 这个命令在 /usr/local/mysql/bin 有时候在启动mysql时候报很多错误可以用这个命令初始化一下 原文地址:https://www.cnblogs.com/fps2tao/p/9029949.html

ajax 后台java代码执行完毕 前端报404错误

一个ajax请求,到java后台代码,后台成功接受并执行相应处理,但是返回的时候,success却没进去,前端报404错误. 因为是由于Controller忘记写spring的@Responsebody注解,所以spring对返回值映射时找不到对应的视图,所以返回404 很常见的错误,虽然是拷贝,难免会忘记一些代码!

执行mysql语句报错 Illegal mix of collations……

Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8mb4_general_ci,COERCIBLE) for operation 在数据库执行查找的命令,判断条件含有特殊字符,再执行的时候报了以上错误: 查看字段编码发现是 latin1 字符集的latin1_german1_ci排序规则 修改数据库字段为utf-8编码  再次执行 顺利出现结果 原文地址:https://www.cnblogs.com/yaradish

sqlplus/rman登录报权限错误ORA-01031/ORA-04005/0RA-00554

安装Weblogic误操作对Oracle用户属组进行了修改 --本地sqlplus登录报错权限问题??? [[email protected] admin]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Sat May 5 01:28:39 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. ERROR:ORA-01031: insufficien

JDBC连接时出现的两个错误

这两个错误都是因为版本的更新导致的: 错误代码: package FirstTest; import java.sql.*; public class FirstJDBC { public static void main(String[] args) throws SQLException { try { //加载驱动类 Class.forName("com.mysql.jdbc.Driver"); //建立连接 Connection con = DriverManager.getC

MySQL 服务启动y异常: 本地无法启动MySQL服务,报的错误:1067,进程意外终止---解决

启动MySQL后,几秒钟后直接报错了 然后在事件查看器中发现了几条错误信息 Can't start server: Bind on TCP/IP port: No such file or directory Do you already have another mysqld server running on port: 3306 ? Aborting 是不是3306端口被引用了,所以我查看了下端口是否被引用 netstat -aon|findstr "3306" 发现如下信息 T