Re: SELECT has_database_privilege('user01', 'db01', 'connect');

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: SELECT has_database_privilege('user01', 'db01', 'connect');
Дата
Msg-id CAKFQuwY8sg4NOtzwmTKw2oq-8ths3knGvdJGzXffgrSD2Y4r6w@mail.gmail.com
обсуждение исходный текст
Ответ на SELECT has_database_privilege('user01', 'db01', 'connect');  ("William Sescu (Suva)" <william.sescu@suva.ch>)
Список pgsql-admin
On Thursday, April 28, 2022, William Sescu (Suva) <william.sescu@suva.ch> wrote:
Hello %

I am kinda confused, if I miss something. I have two questions:

* A new created user should not have the connect privilege per default, if the user is not the owner of the db, right?
* The function has_database_privilege should return false, if I revoke the connect privilege, right?

(postgres@[local]:55042)[postgres]> CREATE USER user01 ENCRYPTED PASSWORD 'user01';
CREATE ROLE
(postgres@[local]:55042)[postgres]> CREATE DATABASE db01 WITH OWNER = postgres;
CREATE DATABASE
(postgres@[local]:55042)[postgres]> SELECT has_database_privilege('user01', 'db01', 'connect');
 has_database_privilege
------------------------
 t                         <= have expected false here
(1 row)

Not how it works, see default privileges, namely for “public”.
 
(postgres@[local]:55042)[postgres]> REVOKE CONNECT ON DATABASE db01 FROM user01;
REVOKE
(postgres@[local]:55042)[postgres]> SELECT has_database_privilege('user01', 'db01', 'connect');
 has_database_privilege
------------------------
 t                         <= have expected false here even more after the revoke statement
(1 row)

Or do I have some misunderstanding in regards of how it should work?

The privilege being found is inherited, you revoked a non-existent grant which doesn’t do anything.  You need to revoke the privilege being inherited, from “public”.

David J.

В списке pgsql-admin по дате отправления:

Предыдущее
От: Les
Дата:
Сообщение: Re: Hot standby writable?
Следующее
От: hubert depesz lubaczewski
Дата:
Сообщение: Re: Hot standby writable?