Qki*_*kiZ 0 postgresql permissions
在https://www.postgresql.org/docs/9.1/sql-grant.html 的文档中,有一个 GRANT 命令的语法。
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON { FUNCTION function_name ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) [, ...]
| ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
Run Code Online (Sandbox Code Playgroud)
我尝试使用此语法向某些函数添加执行权限,但没有成功:
db=# GRANT EXECUTE ON FUNCTION some_function TO some_user;
ERROR: syntax error at or near "TO"
LINE 1: GRANT EXECUTE ON FUNCTION some_function TO some_user...
Run Code Online (Sandbox Code Playgroud)
为什么文档和现实之间有如此紧密的联系?我做错了什么?
之后的括号中缺少“参数数据类型” function_name。我们可以通过\df命令检查函数名称和参数数据类型。
Schema | Name | Result data type |Argument data types | Type
--------+--------------------+---------------------------+--------------------+--------
public | some_function | TABLE(some_results,....) | numeric | normal
Run Code Online (Sandbox Code Playgroud)
命令应该是:
GRANT EXECUTE ON FUNCTION some_function(numeric) TO some_user;
Run Code Online (Sandbox Code Playgroud)
但是语法在方括号中包含参数,因此它们应该不是必需的。但是尝试
GRANT EXECUTE ON FUNCTION some_function() TO some_user;
Run Code Online (Sandbox Code Playgroud)
给出function some_function() does not exist错误。所以 GRANT 命令的语法应该是:
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON { FUNCTION function_name ( argmode arg_name arg_type [, ...] ] ) [, ...]
| ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12747 次 |
| 最近记录: |