【发布时间】:2011-12-07 04:42:06
【问题描述】:
我有一个用户: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 命令回复:“未找到关系。”
所以我在导入的数据库服务器上为 user_x 添加了 SUPERUSER 角色,然后用户_x 可以再次看到关系和数据。
但是 user_x 不需要拥有 SUPERUSER 权限来访问这个数据库。
这个导入的转储有什么问题? 有人现在如何解决这个问题吗?
【问题讨论】:
标签: postgresql user-permissions