Mysql过程错误(执行命令被拒绝给用户)

时间:2015-04-01 20:02:24

标签: mysql stored-procedures

你能帮助我吗

创建程序:

CREATE DEFINER=`gnysoftxuser`@`%` PROCEDURE `insertadmin`(IN  adi  VARCHAR(150))BEGIN Insert Into mekan_tablo (mekan_adi) values (adi); END;

Mysql查询

CALL insertadmin('test');

Mysql错误:

  

执行命令拒绝用户' gnysoftxuser'%'%'用于例行' xdb.insertadmin'

3 个答案:

答案 0 :(得分:0)

我找不到任何关于它的文档,但似乎DEFINER用户必须已经授予EXECUTE,即使它没有执行任何执行(1)。

  1. 创建用户userexecuteonly
  2. 授予userexecuteonly EXECUTE
  3. 仅创建用户用户
  4. 授予userselectonlySELECT
  5. 创建程序设置DEFINER,因为用户只选择选择数据
  6. 以userexecuteonly连接
  7. 通话程序
  8. 注意错误SQL错误(1370):执行命令拒绝用户userselectonly
  9. 授予userselectonlyEXECUTE
  10. 通话程序
  11. 过程运行并返回数据。
  12. (1)没有理由该程序不会调用另一个程序

    如果用户在其他地方使用并且不应该执行程序,则可能会引起关注。

答案 1 :(得分:0)

您需要授予执行权限。在具有授予权限的用户身份的MYSQL命令行中,您将编写:

GRANT EXECUTE ON PROCEDURE 'xdb'.'insertadmin' TO 'gnysoftxuser'@'localhost'; 
flush privileges;

(在您的情况下,本地主机将替换为%,这是一个通配符,单独使用可允许任何IP地址或本地主机。您可能希望对特定部分使用特定IP,本地主机或通配符,例如'192.168.1 。%')

执行完这两行后,再试一次。

答案 2 :(得分:-1)

这意味着您正在连接的MySQL用户没有数据库的EXECUTE特权。 https://dev.mysql.com/doc/refman/5.5/en/privilege-system.html