有一个包含多个模式(用户)的表。我想给予一个方案(用户)对另一个方案的访问权限。为此,用户可以访问另一个方案的表。
方案和用户1:ctl_r1
方案和用户2:check_b2
我希望user 2能够访问scheme 1
我在admin下打开控制台并运行脚本:
set role db_admin;
GRANT ALL ON schema ctl_r1 TO check_b2;
GRANT USAGE ON SCHEMA "ctl_r1" TO "check_b2";
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA "ctl_r1" TO "check_b2";
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA "ctl_r1" TO "check_b2";
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA "ctl_r1" TO "check_b2";
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA "ctl_r1" TO "check_b2";
GRANT EXECUTE ON ALL ROUTINES IN SCHEMA "ctl_r1" TO "check_b2";
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA "ctl_r1" TO "check_b2";
alter role check_b2 set search_path = check_b2, ctl_r1;
在此之后,在管理控制台中,我运行命令:
select rolconfig
from pg_roles
where rolname = 'check_b2';
我在search_path中看到了两个方案:
rolconfig
-----------------------------
{search_path=check_b2,ctl_r1}
接下来,我打开user 2的控制台(check_b2)并检查命令:
show search_path;
search_path
-----------
check_b2
- 由于某种原因,我在search_path中只看到1个模式。
因此,当然,user 2看不到scheme 1的表。
但是过了一段时间(大约10分钟),我又跑了起来:
show search_path;
search_path
----------------
check_b2, ctl_r1
现在我在答案中看到了两个模式。
现在user 2看到了scheme 1的表,并且可以访问它们。
然后,一段时间后,show search_path;
再次只给出1个方案作为响应。
你能解释一下为什么会这样吗?还有我怎样才能给予user 2对scheme 1的一次性访问权呢?
1条答案
按热度按时间46scxncf1#
您可以通过更改用户来永久添加路径。
由于上一个命令仅在下次登录时生效,因此可以通过运行