你能帮助我吗
创建程序:
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'
答案 0 :(得分:0)
我找不到任何关于它的文档,但似乎DEFINER用户必须已经授予EXECUTE,即使它没有执行任何执行(1)。
(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