我给了一个账号有
 grant EXECUTE ON *.* TO 'backup'@'%'; 但是在备份的时候,有一个视图里面要调用一个函数,报错:mysqldump: Couldn't execute 'SHOW FIELDS FROM `vi_age`': execute command denied to user 'backup'@'%' for routine 'test.fn_day' (1370)不是给了execute的权限,怎么还是没有执行的权限?
 
然后在往上看到了
grant execute on procedure test.fn_day  to 'backup'@'%';可是还是不行,还是原来那个错误,但是我换用了root就可以,这个到底是什么原因

解决方案 »

  1.   

    只是给了EXECUTE的权限,但你的存储过程中的其它语句需要到另外的权限,比如SELECT等。
      

  2.   

    SHOW FIELDS FROM `vi_age`
    这个需要select权限
      

  3.   

    已经有了select 权限,我没有说清楚,下面是所有的权限
    GRANT SELECT, RELOAD, PROCESS, FILE, SHOW DATABASES, SUPER, LOCK TABLES, REPLICATION CLIENT, SHOW VIEW, EVENT ON *.* TO 'backup'@'%'