如何在 redshift 中查看 UDF 拨款

use*_*784 3 amazon-redshift

团队,你能帮我获取 sql 查询以找出以下信息:

1) 我将“USAGE ON LANGUAGE PLPYTHONU”授予数据库 TESTDB1 上的 TESTUSER1。如何查明该用户是否在该特定数据库 testdb1 中授予此权限?

testdb1=>grant USAGE ON LANGUAGE PLPYTHONPU to testuser1;
Run Code Online (Sandbox Code Playgroud)

2) 我将一个函数的执行权限授予TESTUSER1。如何查找该用户是否在该特定数据库 testdb1 中授予此权限?

testdb1=> grant execute on function schema1.fun1(float,float) to testuser1;
GRANT
Run Code Online (Sandbox Code Playgroud)

谢谢

Mas*_*aki 6

1)如何检查权限USAGE ON LANGUAGE PLPYTHONU

select lanname,lanacl from pg_language where lanname = 'plpythonu';
Run Code Online (Sandbox Code Playgroud)

lanacl如果授予权限,则包含用户名。

前任)

dev=# select lanname,lanacl from pg_language where lanname = 'plpythonu';
  lanname  |                    lanacl
-----------+----------------------------------------------
 plpythonu | {rdsdb=U/rdsdb,my_test_user=U/rdsdb}
(1 row)
Run Code Online (Sandbox Code Playgroud)

2)如何检查权限EXECUTE ON FUNCTION

SELECT proname,proacl FROM pg_proc WHERE proname='<function-name>'
Run Code Online (Sandbox Code Playgroud)

proacl如果授予权限,则包含用户名。

前任)

dev=# SELECT proname,proacl FROM pg_proc WHERE proname='f_greater';
  proname  |                                        proacl
-----------+---------------------------------------------------------------------------------------
 f_greater | {=X/admin,admin=X/admin,my_test_user=X/admin}
(1 row)
Run Code Online (Sandbox Code Playgroud)

不幸的是,看起来没有方便的默认宏可以很好地获取此类信息。由于没有LANGUAGEUDF 或数据库的概念,因此您无需在这些查询中指定数据库名称。