MySQL 存储过程权限

标签 mysql stored-procedures permissions sql-grant

我试图授予用户在 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/

相关文章:

mysql - SQL复杂的select语句?

php json数据返回jquery

php - 当我使用输出参数调用存储过程时,mysql 中出现错误代码 1414

mysql - 将整个数据库的空字符串更新为 NULL

linux - 为什么/var/www/需要755权限?为什么chown之后不是700?

android - Android 应用程序需要哪些权限才能使用警报管理器服务?

sql - GROUP BY CASE 的问题

mysql - 使用 Laravel Eloquent ORM 的空间点函数

database - 如何将 postgresql 中的模式从本地服务器迁移到生产服务器?

linux - 授予对某一特定目录的访问权限