如何授予用户在MySQL上所有存储过程的访问权限?

10

我正在尝试以下内容:

DROP USER IF EXISTS 'my_user'@'%';
CREATE USER 'my_user'@'%' IDENTIFIED BY 'my_pwd';
GRANT EXECUTE ON PROCEDURE mydb.* TO 'my_user'@'%';

但是我收到了这个错误:

Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used 0.000 sec
如果我明确命名一个进程:
DROP USER IF EXISTS 'my_user'@'%';
CREATE USER 'my_user'@'%' IDENTIFIED BY 'my_pwd';
GRANT EXECUTE ON PROCEDURE mydb.my_proc TO 'my_user'@'%';

它现在可以正常工作,但我希望允许用户账户访问数据库中的每个存储过程,有没有不需要显式授予权限于每个单独存储过程的方法?


尝试使用以下命令:GRANT EXECUTE ON mydb.* TO 'my_user'@'%'; - Phiter
1个回答

22

使用这个替代方案,它会起作用:

GRANT EXECUTE ON mydb.* TO 'my_user'@'%';

查询和答案之间的差异是因为mydb.*不是一个过程,而是(可能)许多过程吗?在手册中提到了这一点吗? - user2338823
1
@user2338823 没错。如果您尝试使用 GRANT EXECUTE ON PROCEDURE,它会期望一个单独的存储过程。我的命令将授予数据库中每个存储过程的执行权限。 - Phiter
这在手册中有提到吗?我可以问一下,你是怎么学会这个的? - user2338823

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