PostgreSQL:由于权限无法插入表中

时间:2018-02-21 12:04:54

标签: postgresql-9.5

我正在使用PostgreSQL 9.5。

我有一个包含多个模式的数据库,我希望用户能够对其中一个模式中的所有表进行选择,更新,插入和删除。

我习惯使用PSQL代码来创建角色:

DROP ROLE IF EXISTS myrole ;
CREATE ROLE myrole WITH 
    LOGIN
    PASSWORD 'myrole' 
    NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION
    ;
GRANT a_user_group TO myrole;

ALTER ROLE myrole VALID UNTIL 'infinity' ;

 \connect mydatabase ;

GRANT ALL PRIVILEGES ON SCHEMA myschema TO myrole;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA myschema TO myrole;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA myschema TO myrole;

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema  GRANT ALL PRIVILEGES ON SEQUENCES TO myrole ;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema  GRANT ALL PRIVILEGES ON TABLES TO myrole ;

GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO myrole ;

我认为这应该足够但我不能对这个用户进行INSERT。我只能做SELECT而且我很确定它是因为组a_user_group具有此权限。

我找不到如何使这个工作。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题解决了!

每当我尝试使用前面提到的角色访问有罪的序列并且读取pgAdmin错误时,pgAdmin崩溃后,我开始怀疑角色的状态有问题。

所以我使用

删除了角色
    REVOKE ALL PRIVILEGES ON SCHEMA traitements FROM zones_delaissees_traitements ;
REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA traitements FROM zones_delaissees_traitements ;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA traitements FROM zones_delaissees_traitements ;
ALTER DEFAULT PRIVILEGES IN SCHEMA traitements  REVOKE ALL PRIVILEGES ON SEQUENCES FROM zones_delaissees_traitements ;
ALTER DEFAULT PRIVILEGES IN SCHEMA traitements  REVOKE ALL PRIVILEGES ON TABLES FROM zones_delaissees_traitements ;
DROP ROLE IF EXISTS zones_delaissees_traitements ;

再次创建它,现在它可以工作了!