Если вы не дали testuser
разрешение CREATE
для abcd_test1
, это может работать, только если все объекты в дампе находятся в схеме public
.В противном случае вы получите ошибки, как только pg_restore
попытается создать схемы.
То, что вы наблюдаете, вызвано двумя причинами:
Каждая база данных имеет CONNECT
разрешения для PUBLIC
по умолчанию.
схема public
имеет CREATE
разрешения для PUBLIC
по умолчанию.
Поскольку PUBLIC
- это псевдороль, к которой принадлежит каждый, testuser
может подключаться и создавать объекты в схеме public
.
Хорошей идеей является ограничение разрешений для каждой новой базы данных PostgreSQL:
REVOKE ALL ON DATABASE abcd_test1 FROM PUBLIC;
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
Тогда вы можете раздавать разрешения более ограничительным образом.