关于mysql用户权限不足引发的问题

上一篇 / 下一篇  2017-10-18 09:59:24 / 个人分类:mysql

  前几天一个web应用项目,由于时间较赶,部署到生产线上时,借用了其他厂商的服务器和mysql数据库,且数据库的用户也是对方提供的,由于该用户某些权限不足,导致部署的时候发现小小的问题。现在分享下。
  刚开始支撑部署web项目,一堆的配置都配置正确后,在浏览器输入前端url,页面弹出错误提示
“### Error querying database. Cause:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:
execute command denied to user `xxx'@%' for routine 'yyy.getParentList'
### The error may exit in
......”,这提示,少了getParentList函数,于是乎,从测试网数据库导出该函数。
  导出函数,用的是navicate for mysql。步骤是:
    步骤1:用navicate for mysql连接mysql数据库;
    步骤2:点击菜单栏-》工具-》数据传输,在数据传输页面,点击常规,页面左边是源(当前连接、数据库、数据库对象),页面右侧是目标(连接或文件)。源中数据库对象选择要导出的函数,目标中选择文件,并设置要导出到的本地路径,然后点击【开始】,就OK了。顺便说下,导出数据表、表结构,都是可以用该方法。
  导出函数后,提供到生产线。在生产环境采用服务器导入方式。这里就不具体怎么导了,直接进入mysql服务器,然后使用source命令就行。执行时报错:“ERROR 1370 (42000):alter routine comm  denied to user 'xxx' @ 'localhost' for routine 'yyy.getParentList'
ERROR 1044 (42000):Access denied for user 'xxx' @ 'localhost' to database 'yyy'”,排查了下,是用户xxx没有创建函数存储过程的权限,于是乎,设置了该用户权限,就可以了。
  设置权限,执行命令:
mysql> grant execute on procedure yyy.getParentList to 'xxx'@'localhost';
mysql> flush privileges; // 该命令,修改用户数据或权限后,可不重启mysql服务,可直接生效。


TAG:

 

评分:0

我来说两句

Open Toolbar