web-dev-qa-db-ja.com

Postgresqlでは、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

このデータベースをダンプします

$ pg_dump -U foo -v -f gee.dump gee

データベースでは、ユーザーバーがスキーマを作成しました。したがって、これらすべてのユーザーがデータベースgeeをユーザーpostgresとして復元するため(ユーザーfooがデータベースgooを作成した後)、

$ Sudo -u postgres psql -d goo -f gee.dump

ユーザーバーには、データベースgooに対するアクセス権限がありません。しかし、データベースgoo内では、すべてのユーザーにとって、スキーマとテーブルに対するすべての特権はOKです。

goo=> \l
                              List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 goo       | foo      | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

データベース自体へのアクセス権限が復元されないのはなぜですか?

7
ericj

データベース自体へのアクセス権限が復元されないのはなぜですか?

これはバグ、または設計の監視です 。そのレポートへの対応者はそうは思わないが。

pg_dumpall --globals-onlyは、データベースの権限をダンプしません。また、データベースダンプの一部としてpg_dumpも行いません。

したがって、データベースへの付与は完全なpg_dumpallにのみ含まれます。

私は this thread を突っ込むことによってそれについていくつかのノイズを作ります。

5
Craig Ringer