Я новичок в базе данных 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