Postgresql

PostgreSQL:訪問權限問題

  • January 19, 2016

我有一個“生產”使用者和數據庫,我想在其上授予屬於生產組的所有使用者的權限。

不幸的是,我沒有成功,保持訪問被拒絕錯誤。

你能看看下面的範例腳本並告訴我我錯過了什麼(生產使用者/數據庫是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;

引用自:https://dba.stackexchange.com/questions/126617