Добрый день.
О пишу как просто создать базу, пользователя, группы и ограничение доступа к ним.
По умолчанию доступ к базам имеют все созданные пользователи. По этому отключаем в том числе их на подключением к ним и соответственно их просмотр.
Для этого:
1.Создаем базу:
CREATE DATABASE имя_БД;
2. Создаем пользователя:
CREATE USER имя_пользователя WITH PASSWORD 'myPassword';
3. Для удобства в будущем создаем группу для предоставления доступа:
CREATE GROUP имя_группы WITH USER имя_пользователя;
4. Перед тем как настраивать доступ к созданной БД необходимо запретить доступ ко всем имеющимся БД в схеме, если пользователь не в группе:
REVOKE ALL ON DATABASE postgres FROM PUBLIC;
REVOKE ALL ON DATABASE имя_бд FROM PUBLIC;
…
5. Предоставим доступ группе к БД
GRANT ALL PRIVILEGES ON DATABASE имя_БД TO GROUP имя_группы;
5.1 Либо непосредственно пользователю доступ к БД
GRANT ALL PRIVILEGES ON DATABASE имя_БД TO имя_пользователя;
Чтобы запретить доступ делаем следующее:
Исключаем из группы пользователя:
ALTER GROUP имя_группы drop USER имя_пользователя;
Если пользователь не в группе делаем ему Revoke на базе
А вернуть или в последствии добавить доступ пользователю
Необходимо добавить пользователя в группу
ALTER GROUP имя_БД ADD USER имя_пользователя;