如何让 pg_dump 包含创建用户命令

nad*_*ish 7 postgresql

我需要创建以下所有命令的转储。

   test=> create user rdstest login password 'rdstest';
   CREATE ROLE
   test=> grant connect on database test to rdstest;
   GRANT
   test=> create user devadmin login password 'devtest';
   CREATE ROLE
   test=> grant connect on database test to devadmin;
   GRANT
   test=> grant rdstest to devadmin with admin option;
   GRANT ROLE
   test=> grant rdstest to devadmin;
   GRANT ROLE
   test=> create schema authorization rdstest;
   CREATE SCHEMA
Run Code Online (Sandbox Code Playgroud)

当我尝试使用 pg_dump 作为 pg_dump -U devadmin -h ****xxx.rds.amazonaws.com test > Outfile.sql 创建它时

我只能看到与架构相关的命令

CREATE SCHEMA rdstest;
ALTER SCHEMA rdstest OWNER TO rdstest;
Run Code Online (Sandbox Code Playgroud)

如何让 pg_dump 包含所有命令:创建用户命令,将数据库测试连接授予 rdstest 等。

a_h*_*ame 16

pg_dump不能这样做,因为pg_dump只转储单个数据库并且该信息不是一个数据库的一部分,而是全局存储在 Postgres“集群”中。

您需要使用pg_dumpall以下--globals-only选项:

pg_dumpall --globals-only  --file=globals.sql
Run Code Online (Sandbox Code Playgroud)

  • @nadish 正如我在回答中已经写过的那样:用户/角色 ** 不** 特定于特定数据库。他们**是**全球的 (2认同)