eri*_*icj 8 postgresql backup permissions pg-dump
假设用户 foo 拥有数据库 gee,并且用户 foo 已授予用户 bar 对数据库 gee 的所有访问权限
gee=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
gee | foo | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/foo +
| | | | | foo=CTc/foo +
| | | | | bar=CTc/foo
Run Code Online (Sandbox Code Playgroud)
我们转储这个数据库,
$ pg_dump -U foo -v -f gee.dump gee
Run Code Online (Sandbox Code Playgroud)
在数据库中,gee 用户栏创建了一个架构。因此,因为所有这些用户我们将数据库 gee 恢复为用户 postgres(在用户 foo 创建了数据库 goo 之后),
$ sudo -u postgres psql -d goo -f gee.dump
Run Code Online (Sandbox Code Playgroud)
用户栏没有对数据库 goo 的访问权限。但是在数据库 goo 中,对于所有用户,模式和表的每个权限都可以。
goo=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
goo | foo | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Run Code Online (Sandbox Code Playgroud)
为什么数据库本身的访问权限没有恢复?
为什么数据库本身的访问权限没有恢复?
这是一个错误,或设计疏忽。尽管该报告的回应者并不这么认为。
pg_dumpall --globals-only不会转储数据库上的权限。也不pg_dump作为数据库转储的一部分。
因此,对数据库的授权仅包含在完整的pg_dumpall.
我会通过戳这个线程来制造一些噪音。
| 归档时间: |
|
| 查看次数: |
7490 次 |
| 最近记录: |