授予其他用户执行功能权限
Grant Execute Function permission to another user
我有一个数据库函数 fn_relation_isModerator
,只有用户 api
可以访问这个函数。现在我想让另一个用户拥有这个权限(同时保持之前的权限).
我通过以下查询检查了例程名称和用户:
select routine_name, routine_type, definer from information_schema.ROUTINES where ROUTINE_SCHEMA = 'db_name';
结果:
+-------------------------+---------------+----------+
| ROUTINE_NAME | ROUTINE_TYPE | DEFINER |
+-------------------------+---------------+----------+
| | | |
| fn_relation_isModerator | FUNCTION | api@% |
+-------------------------+---------------+----------+
方法一:
所以我运行下面查询g运行t这个权限:
GRANT EXECUTE ON PROCEDURE db_name.fn_relation_isModerator TO 'api_worker'@'%';
但它导致了以下错误:
Error Code: 1305. PROCEDURE fn_relation_isModerator does not exist
方法二:
查询:
GRANT EXECUTE ON FUNCTION `db_name`.`fn_relation_isModerator` TO 'api_worker'@'%';
错误
Error Code: 1133. Can't find any matching row in the user table
方法三:
查询:
GRANT EXECUTE ON `db_name`.`fn_relation_isModerator` TO 'api_worker'@'%';
错误:
Error Code: 1144. Illegal GRANT/REVOKE command; please consult the
manual to see which privileges can be used
您必须在 function
(方法 2)上使用 grant execute:
GRANT EXECUTE ON FUNCTION `db_name`.`fn_relation_isModerator` TO 'api_workers'@'%';
正如 OP 在评论中所解释的那样,用户输入有误,应该是 api_workers
而不是 api_worker
。
由于使用了不存在的用户,所有方法都失败了。
我有一个数据库函数 fn_relation_isModerator
,只有用户 api
可以访问这个函数。现在我想让另一个用户拥有这个权限(同时保持之前的权限).
我通过以下查询检查了例程名称和用户:
select routine_name, routine_type, definer from information_schema.ROUTINES where ROUTINE_SCHEMA = 'db_name';
结果:
+-------------------------+---------------+----------+
| ROUTINE_NAME | ROUTINE_TYPE | DEFINER |
+-------------------------+---------------+----------+
| | | |
| fn_relation_isModerator | FUNCTION | api@% |
+-------------------------+---------------+----------+
方法一:
所以我运行下面查询g运行t这个权限:
GRANT EXECUTE ON PROCEDURE db_name.fn_relation_isModerator TO 'api_worker'@'%';
但它导致了以下错误:
Error Code: 1305. PROCEDURE fn_relation_isModerator does not exist
方法二:
查询:
GRANT EXECUTE ON FUNCTION `db_name`.`fn_relation_isModerator` TO 'api_worker'@'%';
错误
Error Code: 1133. Can't find any matching row in the user table
方法三:
查询:
GRANT EXECUTE ON `db_name`.`fn_relation_isModerator` TO 'api_worker'@'%';
错误:
Error Code: 1144. Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used
您必须在 function
(方法 2)上使用 grant execute:
GRANT EXECUTE ON FUNCTION `db_name`.`fn_relation_isModerator` TO 'api_workers'@'%';
正如 OP 在评论中所解释的那样,用户输入有误,应该是 api_workers
而不是 api_worker
。
由于使用了不存在的用户,所有方法都失败了。