У меня есть пользователь: user_x, который владеет базой данных на postgresql и не имеет атрибутов ROLE, таких как (CREATE_DB, SUPERUSER, ...)
Этот user_x может получить доступ ко всей БД, создать таблицы (в своей базе данных), выбрать, вставить и обновить данные.
У меня есть список баз данных:
mydatabase=> \l
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
-------------------------+----------+-----------+-----------+-------+-----------------------
postgres | postgres | SQL_ASCII | C | C |
mydatabase | user_x | UTF8 | C | C |
template0 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | SQL_ASCII | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
whoami | postgres | SQL_ASCII | C | C |
(6 rows)
и следующие роли:
mydatabase=> \du
List of roles
Role name | Attributes | Member of
-----------+-----------------------------------+-----------
postgres | Superuser, Create role, Create DB | {}
user_x | | {}
mydatabase=> \d
List of relations
Schema | Name | Type | Owner
--------+-----------------------------------+----------+----------
public | addresses | table | user_x
public | addresses_id_seq | sequence | user_x
public | assignments | table | user_x
public | assignments_id_seq | sequence | user_x
...
Хорошо, пока я не дам данные и не восстановлю их на другом сервере postgresql.
После импорта данных на другом сервере (с тем же именем базы данных и пользователем) и вошедшем в систему psql, ответ \ d на команду: «Не найдено отношений.»
Итак, я добавил SUPERUSER роль для user_x на импортированном сервере базы данных, и tadã user_x снова может видеть отношения и данные.
Но user_x не должен иметь привилегию SUPERUSER для доступа к этой базе данных.
Что не так с этим импортированным дампом?
Кто-нибудь сейчас как это решить?