Назад | Перейти на главную страницу

PostgreSQL, 1 сервер, X пользователей, X отдельные среды

Я новичок в базе данных PostgreSQL, некоторые вещи решены, как в MySQL. У меня вопрос, как проще всего добавить отдельного пользователя из других объектов в базу данных.

Я хочу создать пользователя, у которого должно быть разрешение на template1. Он должен уметь создавать базы данных и авторизоваться. Я хочу, чтобы ее базы данных были видны только ей. Я хочу, чтобы она не перечисляла / не смотрела / не имела каких-либо разрешений для других пользовательских баз данных, созданных таким образом.

Какое простое решение для этого?

Спасибо за помощь

Самый простой способ сделать это - потребовать, чтобы у пользователя было то же имя, что и у базы данных, и настроить pg_hba.conf так что все пользователи ограничены sameuser база данных. Например, что-то вроде:

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD
host    sameuser        all             0.0.0.0/0               md5

Вам нужно будет добавить это в дополнение к перечислению любых административных учетных записей, которые имеют доступ ко всем базам данных отдельно. Если вы знаете, с какого IP-адреса будут подключаться пользователи, измените 0.0.0.0/0 чтобы соответствовать. Если пользователи подключаются через локальный сокет, а не через TCPIP, измените TYPE на local и удалите столбец адреса. В md5 метод означает, что требуются пароли. Вам также понадобится строка для template1 база данных, которая дает доступ всем пользователям.

Что касается запрета им видеть базы данных других пользователей вообще, Я не уверен, что вы можете с этим поделать, поскольку они перечислены в схеме pg_catalog и перечислены psql -l