Мое приложение мультитенантное.Я создаю одну базу данных для каждого арендатора / пользователя.До сих пор я создавал все базы данных с помощью следующей команды из кода C #.
CREATE DATABASE @userDBName WITH OWNER = @dbOwner ENCODING = 'UTF8';
Таким образом, я вижу, что все базы данных имеют одного и того же владельца, и этот владелец получает доступ ко всем таблицам во всехБазы данных.
Теперь, в соответствии с новым требованием безопасности, мы хотим реализовать, чтобы каждая база данных была доступна только одному пользователю, а пользователь одной базы данных не должен иметь доступа к другой базе данных.
Поскольку я впервые имею дело с понятиями ролей / пользователей в Postgres, я не могу найти удачу во всем, что я до сих пор делал.
Я создал пользователей ипопытался предоставить им доступ к одной базе данных
CREATE USER test WITH ENCRYPTED PASSWORD '123456';
GRANT ALL PRIVILEGES ON DATABASE userdb1 TO test;
Теперь, когда в строке подключения в c # я даю пользователю Id = 'test' и пароль, как указано выше, я получаю ошибку "Отказано в доступе".
Кроме того, из PgAdmin, когда я захожу в базу данных и пытаюсь сменить владельца на нового пользователя, которого я создал выше, я получаю эту ошибку
ERROR: must be member of role test
Что именно нужнобыть сделано?Я изучил все возможные решения в Интернете и перепробовал почти все, но ничто не сильно помогает.