Postgresql

postgresql:序列 <table>_i_seq 的權限被拒絕

  • November 6, 2021

我在 PostgreSQL 中有一個表的模式,如下所示:

CREATE TABLE IF NOT EXISTS  data.pmacct (

   i                       BIGSERIAL PRIMARY KEY,

還有使用者:

  • A:超級使用者權限
  • B : 讀/寫權限
  • C : 讀取權限

我對權限進行了以下修改(作為使用者A

CREATE SCHEMA data ;
ALTER DATABASE ip_spotlight SET search_path TO data ;
REVOKE EXECUTE ON ALL FUNCTIONS IN SCHEMA data FROM PUBLIC ;
ALTER DEFAULT PRIVILEGES IN SCHEMA data GRANT SELECT ON TABLES TO C ;
ALTER DEFAULT PRIVILEGES IN SCHEMA data GRANT ALL ON TABLES TO B ;

作為使用者postgres

GRANT USAGE ON SCHEMA data TO netops ;
GRANT USAGE ON SCHEMA data TO netopsapp ;
GRANT SELECT ON ALL TABLES IN SCHEMA data TO C ;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA data TO C ;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA data TO C ;
GRANT ALL ON ALL TABLES IN SCHEMA data TO B ;
GRANT ALL ON ALL SEQUENCES IN SCHEMA data TO B ;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA data TO B ;

但我作為使用者B收到以下錯誤消息

錯誤:序列 pmacct_i_seq 的權限被拒絕

你能告訴我我做錯了什麼並且使用者B不能在表中做一個INSERT陳述嗎?data.pmacct

GRANT USAGE, SELECT ON SEQUENCE some_table_name_i_seq TO some_user;

在這種情況下:

GRANT USAGE, SELECT ON SEQUENCE pmacct_i_seq TO B;

你想念

ALTER DEFAULT PRIVILEGES GRANT USAGE ON SEQUENCES TO B;

pmacct_i_seq是支持該BIGSERIAL列的序列i。由於使用者 B 可以修改表,因此它需要訪問序列的權限。

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