Вы должны понимать, что в PostgreSQL пользователи составляют на кластер базы данных . @ Майкл уже демонстрирует, как получить их список.
Таким образом, если вы не ограничите разрешения для конкретных баз данных явно с помощью REVOKE
и GRANT
, все пользователи в кластере имеют базовый доступ к любой базе данных в кластере.
Чтобы определить, имеет ли конкретный пользователь определенную привилегию ('CONNECT') для базы данных:
has_database_privilege(user, database, privilege)
Подробнее о привилегированных функциях в руководстве .
Чтобы определить все определенные привилегии для конкретной базы данных :
SELECT datname, datacl
FROM pg_database
WHERE datname = 'mydb';
Вы получаете NULL
за datacl
, если не применяются особые ограничения.
В дополнение к этому вы можете ограничить доступ для базы данных и для пользователя в файле pg_hba.conf
. Это на более низком уровне. Пользователь даже не сможет подключиться, если pg_hba.conf
не разрешит ему, даже если сама база данных разрешит доступ.