Postgresql
PostgreSQL:訪問權限問題
我有一個“生產”使用者和數據庫,我想在其上授予屬於生產組的所有使用者的權限。
不幸的是,我沒有成功,保持訪問被拒絕錯誤。
你能看看下面的範例腳本並告訴我我錯過了什麼(生產使用者/數據庫是
toto
,生產組是toto_group
)嗎?一些評論:
- 案例是:數據載入已經在生產中。開發人員(
titi
等)現在只需讀取數據,我們希望他們從生產數據庫中讀取數據,以避免複製所有內容。- 我最初在 Linux 上嘗試過,但我在 windows 上做了測試腳本。結果相同。
- 我正在使用 postgresql 9.5
- 我還嘗試授予對錶而不是架構的訪問權限。結果相同。
非常感謝。
\c postgres postgres DROP DATABASE IF EXISTS toto; DROP TABLESPACE IF EXISTS toto_ts; DROP ROLE IF EXISTS toto; DROP DATABASE IF EXISTS titi; DROP TABLESPACE IF EXISTS titi_ts; DROP ROLE IF EXISTS titi; DROP ROLE IF EXISTS toto_group; CREATE ROLE toto_group NOLOGIN; CREATE ROLE toto WITH PASSWORD 'toto' LOGIN; CREATE TABLESPACE toto_ts OWNER toto LOCATION 'd:/pg_ts/toto'; CREATE DATABASE toto TABLESPACE=toto_ts TEMPLATE=template0 OWNER=toto; GRANT toto_group TO toto; CREATE ROLE titi WITH PASSWORD 'titi' LOGIN; CREATE TABLESPACE titi_ts OWNER titi LOCATION 'd:/pg_ts/titi'; CREATE DATABASE titi TABLESPACE=titi_ts TEMPLATE=template0 OWNER=titi; GRANT toto_group TO titi; COMMIT; \c toto DROP SCHEMA public; CREATE SCHEMA s_test; SET SCHEMA 's_test'; GRANT SELECT ON ALL TABLES IN SCHEMA s_test TO toto_group; CREATE TABLE t_test (id INTEGER); COMMIT; \c titi DROP SCHEMA public; CREATE SCHEMA s_test; SET SCHEMA 's_test'; GRANT SELECT ON ALL TABLES IN SCHEMA s_test TO toto_group; CREATE TABLE t_test (id INTEGER); COMMIT;
您還應該授予對數據庫及其
SCHEMA
本身的訪問權限:GRANT CONNECT ON DATABASE toto TO toto_group; GRANT USAGE ON SCHEMA s_test TO toto_group;