我有一个用户:user_x,它在postgresql上拥有一个数据库,并且没有任何ROLE属性,如(CREATE_DB,SUPERUSER,.)
这个user_x可以访问整个DB,创建表(在他的数据库上),选择,插入和更新数据。
我有一个数据库列表
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命令回复:“未找到关系"。
因此,我在导入的数据库服务器上为user_x添加了SUPERUSER角色,这样user_x就可以再次看到关系和数据了。
但是user_x不需要有SUPERUSER权限就可以访问这个数据库。
这个进口的垃圾场有什么问题吗?有没有人知道如何解决这个问题?
3条答案
按热度按时间pkmbmrz71#
也许
public
架构的架构权限被破坏了。\dn+
在两个站点上的输出是什么?输出应该如下所示:
字符串
如果
=UC/postgres
部分丢失,可以使用型
oug3syen2#
未找到任何关系。
如果数据库中没有表,也会出现此错误。
字符串
yqyhoc1h3#
我使用的是psql 16.0,server 15.1。我在DataGrip中重命名了一个连接,现在我看不到任何表(即使在恢复到以前的名称之后)。我如何显示这些表?
字符串