队 你能帮我解决一下sql查询:
1)我在数据库TESTDB1上向TESTUSER1授予“使用语言PLPYTHONU”。如何确定此用户是否在该特定数据库testdb1中授予了此权限?
testdb1=>grant USAGE ON LANGUAGE PLPYTHONPU to testuser1;
2)我将一个函数的执行权限授予TESTUSER1。如何查找此用户是否在该特定db testdb1中授予了此权限?
testdb1=> grant execute on function schema1.fun1(float,float) to testuser1;
GRANT
由于
答案 0 :(得分:2)
1)如何检查select lanname,lanacl from pg_language where lanname = 'plpythonu';
lanacl
如果给出了权限, dev=# select lanname,lanacl from pg_language where lanname = 'plpythonu';
lanname | lanacl
-----------+----------------------------------------------
plpythonu | {rdsdb=U/rdsdb,my_test_user=U/rdsdb}
(1 row)
包含用户名。
离)
EXECUTE ON FUNCTION
2)如何检查SELECT proname,proacl FROM pg_proc WHERE proname='<function-name>'
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)
包含用户名。
离)
LANGUAGE
不幸的是,看起来没有方便的默认宏来很好地获取这些信息。由于DTE
或UDF没有数据库概念,因此您无需在这些查询中指定数据库名称。