Postgresql
postgresql:序列 <table>_i_seq 的權限被拒絕
我在 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 可以修改表,因此它需要訪問序列的權限。