postgresql database owner can't access database - “No relations found.”
我有一个用户:user_x在postgresql上拥有一个数据库,并且没有任何ROLE属性,如(CREATE_DB,SUPERUSER,...)
这个user_x可以访问整个数据库,创建表(在他的数据库上),选择,插入和更新数据。
我有这个数据库列表:
1 2 3 4 5 6 7 8 9 10 11 12 | 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) |
以及以下角色:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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命令回复:"找不到关系"。
所以我在导入的数据库服务器上为user_x添加了SUPERUSER角色并且tad? user_x可以再次查看关系和数据。
但是user_x不需要具有SUPERUSER权限来访问此数据库。
这个导入的转储有什么问题?
现在有人怎么解决这个问题?
也许
输出应如下所示:
1 2 3 4 5 6 | List OF schemas Name | Owner | Access privileges | Description --------+----------+----------------------+------------------------ public | postgres | postgres=UC/postgres | standard public schema : =UC/postgres (1 ROW) |
如果缺少
1 | GRANT ALL ON schema public TO public; |