MySQL:用户''@'localhost'执行例程命令被拒绝错误。

40

我在打开我的旧网站时遇到了一些问题。我的dataTable显示:

DataTables warning: JSON data from server could not be parsed. This is caused by a JSON formatting error.

之后,我尝试调试我的脚本,发现mysql中出现了错误:

Error occuered during query execution: 
(<small>SELECT SQL_CALC_FOUND_ROWS ID,name,remark,avrusepmonth 
        , CONCAT('&lt;input type=''checkbox''id=''cb' , ID ,''' name=''check[]''                
        value=''',ID,''' &gt;','&lt;label class=''lbcb'' for=''cb', 
        ID,'''&gt;&lt;=update=&lt;/label&gt;') as checkb 
        ,monthavrage(ID,12) as latestavr , moq, leadtime 
        FROM test_media  WHERE nowuse=1 and monthavrage(ID,12)  &gt; 0  ORDER BY  name
        desc, ID
        LIMIT 0, 10</small>):
 execute command denied to user 'jeinqa'@'localhost' for routine 'TestMediaControl.monthavrage'

然后我尝试在谷歌上搜索执行命令被拒绝用户'jeinqa'@'localhost'对于例程'TestMediaControl.monthavrage',有些网站说我必须做一些GRANT

GRANT EXECUTE ON PROCEDURE TestMediaControl.monthavrage TO 'jeinqa'@'localhost'

但我得到了:

#1370 - execute command denied to user 'jeinqa'@'localhost' for routine 'TestMediaControl.monthavrage'

你能告诉我应该怎么做来解决这个问题吗?

6个回答

51

这个方法有效......我试图在 root 中授权该特权。

  1. root 身份登录
  2. GRANT EXECUTE ON PROCEDURE TestMediaControl.monthavrage TO 'jeinqa'@'localhost'
  3. flush privileges;

18

我来晚了,也尝试一下结合。

GRANT EXECUTE ON PROCEDURE TestMediaControl.monthavrage TO 'jeinqa'@'%';

flush privileges;

同时尝试将PROCEDURE替换为FUNCTION。


8

几小时前,我在使用phpMyAdmin执行存储过程时遇到了一个问题。我以为这个问题是语法错误,但事实上在一个字段名和计算字段之间缺少了一个逗号,导致了同样的错误信息。


2
哈哈,这不是一个技术问题的解决方案,而是一个语法错误的解决方案,我曾经遇到过同样的问题,使用这个方法解决了...太棒了....!(我希望我能给这个答案点赞两次) - Krunal

2

我也遇到了这个问题 - 我的错误是在于 count 函数 - 访问被拒绝。

问题在于我使用了 "count (case when...)",而在 count 和 ( 之间不能有空格。去掉空格后问题得到解决。


这是不太可能的,因为错误显示“拒绝给用户命令”。 - Jairus
这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - FKayani
这很奇怪,因为我已经拥有了权限。但是这对我起作用了!没有任何答案可以解决问题,谢谢。 - Vani Gupta
是的,这正是我的问题。这是对这个问题的答案。 - csrowell

1
我在查询中尝试使用MIN函数时遇到了相同的错误。
Error Code: 1370. execute command denied to user 'a.user'@'%' for routine 'mysqlserver.MIN'

MySQL不喜欢在MIN和开括号之前出现空格。
在阅读上述内容并尝试使用MIN(..)而不是MIN (..)之后,我的查询成功了。
真是让人费解。

-2

我昨天遇到了这个问题,本来以为是语法错误,但却显示了这个信息。

我的错误:我写成了"SELECT m.id, m.MAX(id_number) as id_number..." 而不是 "SELECT m.id, MAX(m.id_number) as id_number...".... 错误在于MAX函数。错误信息并没有太大帮助。


这似乎是一个后续问题。也许将其发布为评论而不是问题会更好。如果您有问题,请开始一个新的问题。 - Marcinek
@Marcinek,在我看来这似乎是另一种可能会令人困惑地出现错误的情况,并且需要通过修复 SQL 来解决它。 - Scratte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接