我在同一模式下從postgreSql中的超級用戶創建了兩個角色。PostgreSQL:訪問其他用戶擁有的表
1)read_only_with_create_view
2)READ_WRITE
然後,我已經創建了兩個用戶從每個角色。 (read_only_with_create_view_user和read_write)
現在由read_only_with_create_view_user創建的任何新視圖都不能由read_write_user作爲視圖的所有者(read_only_with_create_view_user)訪問。
那麼通過read_write_user訪問所有新視圖的方式是什麼?
基本上我試圖實現的是一個用戶創建的所有東西都應該可以被其他用戶訪問。
我的步驟如下:
CREATE ROLE read_only_role WITH
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';
GRANT CONNECT ON DATABASE mydb to read_only_role;
GRANT USAGE,CREATE ON SCHEMA myschema TO read_only_role;
GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO read_only_role;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA myschema TO read_only_role;
CREATE USER read_only_with_create_view_user
WITH PASSWORD '*****'
in ROLE read_only_role;
-- Now created new views using this role. That means read_only_with_create_view_user is owner of those views.
-- Creating new read-write role.
CREATE ROLE rw_role WITH
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity' IN ROLE read_only_role;
GRANT CONNECT ON DATABASE mydb to rw_role;
GRANT USAGE ON SCHEMA myschema TO crn_rw_role_qa;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA myschema TO rw_role;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA myschema TO rw_role;
CREATE USER read_write_user
WITH PASSWORD '*****'
in role rw_role;
So after login with read_write_user when I try to access new views created by read_only_with_create_view_user, I get below error
ERROR: permission denied for relation view_name
********** Error **********
ERROR: permission denied for relation view_name
SQL state: 42501
感謝,
人士Himanshu
我已經嘗試過這種方式在創建角色語法爲「在角色中創建角色...」,但read_only_with_create_view_user創建的新視圖不能由read_write_user訪問。它說錯誤:許可被拒絕關係視圖名稱 **********錯誤********** 錯誤:權限被拒絕關係視圖名稱 SQL狀態:42501 –
您必須顯示您的嘗試。使用您發佈的命令更新您的問題。 –
另外,檢查你的角色是否有'INHERIT'屬性。 –