【问题标题】:how to get pg_dump to include create user command如何让 pg_dump 包含创建用户命令
【发布时间】:2018-04-12 05:36:30
【问题描述】:

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

   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

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

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

CREATE SCHEMA rdstest;
ALTER SCHEMA rdstest OWNER TO rdstest;

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

【问题讨论】:

    标签: postgresql


    【解决方案1】:

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

    为此,您需要使用pg_dumpall,使用--globals-only 选项:

    pg_dumpall --globals-only  --file=globals.sql
    

    【讨论】:

    • ...也许您应该添加:对于表空间类似,它们也是全局安装的。
    • 我只想使用 --globals-only 选项转储测试数据库(用户、组等),从而生成所有数据库通用的全局对象转储。是否可以获取特定数据库的用户、组?
    • @nadish 正如我已经在我的回答中所写:用户/角色特定于特定数据库。它们全球性的
    猜你喜欢
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多