MySQL存储过程权限

来源:互联网 发布:企业网络组建毕业论文 编辑:程序博客网 时间:2024/04/18 13:18
其实MySQL的存储过程权限配置非常简单,只需要给相应用户授予相应数据库的EXECUTE权限即可,具体语句示例如下:

//给username@%这个用户授予user库全部表的存储过程执行权限,当然这个存储过程是不分表的,所以这个所谓的全部表一般用在例如SELECT,UPDATE等权限上

GRANT EXECUTE ON `user`.* TO 'username'@'%'

这个权限授予以后,这个用户在MySQL里就可以执行存储过程了。但是,注意但是,在JAVA程序连接的时候却会报权限不够,那这个权限不够因为JAVA的驱动要读取这个存储过程的元数据,这个元数据是存储在MySQL的mysql.proc中的,所以:


JAVA程序使用时授权:

针对JAVA程序,还需要给用户授予mysql.proc表的读取权限,命令示例如下:

GRANT SELECT ON `mysql`.`proc` TO 'username'@'%'

但是如果我们不想给这个权限呢?我们总是不希望给出更多的权限,既然本身EXECUTE权限就够了,为什么要多给你JAVA程序权限?我们就可以在数据库连接字符串后面加上:

noAccessToProcedureBodies=true

这样就可以不在授予mysql.proc的SELECT权限了
0 0