Dear Thomas, Dear All!

Thank you for the answers, and explanations!

Thomas Kellerer <sham...@gmx.net> ezt írta (időpont: 2023. aug. 25., P,
16:02):

>
> With Postgres 15 it should be as simple as:
>
>    CREATE ROLE CREATE ROLE u_tdb_ro WITH LOGIN;
>    GRANT pg_read_all_data TO u_tdb_ro;
>
> In previous versions the PUBLIC (pseudo) role was granted the CREATE
> privilege
> on the public schema which is no longer the case since Postgres 15
>
> For previous versions it's highly recommended to do this as well:
>
>    revoke create on schema public from public;
>

I forgot to write that we have a PGSQL 11.xxx version (older than 15).

What I experienced was that when I revoked CREATE from the public, the
database owner also can't create tables.

But after this:

GRANT CREATE ON SCHEMA public TO u_tdb;


I got back the creation right for u_tdb.

set role to  u_tdb;
drop table if exists test_230824_B;
create table if not exists test_230824_B(a int primary key);
insert into test_230824_B values (1), (2);
select * from test_230824_B;


Formerly I thought that the database owner always had rights to create
tables, but in PG11.xxx seems to not.

Thank you again! I will test all operations to avoid the side effects.
Because I must avoid endangering normal usage.

Best regards
dd

Reply via email to