我试图授予用户在 MySQL 数据库的存储过程级别运行存储过程的权限,而不是允许用户在数据库中执行任何存储过程。我试图执行以下代码:
GRANT EXECUTE ON myDB.spName TO 'TestUser'@'localhost';
但我不断收到以下错误:非法GRANT/REVOKE命令,请查阅手册以查看可以使用哪些权限。
我尝试将其更改为以下内容:
GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';
我得到一个不同的错误说明:
无法在用户表中找到任何匹配的行。
我很困惑我哪里出错了?
同样在 MySQL Workbench 上,我似乎看不到任何通过 GUI 在存储过程级别授予权限的方法。这是正确的还是我遗漏了什么?
提前致谢。
最佳答案
您的第二次尝试是正确的方法:
GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';
但如果这不起作用,请验证...
a) 您(运行所有这些命令的用户)拥有授予权限 [即带有授予选项]。如果您是 root,那么您就有授权。
b) 您授予执行权限的用户存在,例如
select user from mysql.user where user like 'test%';
如果没有,则创建用户,例如
CREATE USER 'TestUser'@'localhost' IDENTIFIED BY 'passwordxxxx';
#depending on your needs
GRANT SELECT,DELETE,UPDATE PRIVILEGES ON myDb.* TO 'TestUser'@'localhost';
希望这会有所帮助:)
关于MySQL 存储过程权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10089308/