如何在没有数据的postgresql中备份和恢复仅列出(名称)数据库,角色和数据库权限?

时间:2017-05-14 09:07:03

标签: postgresql psql pg-dump

备份和恢复如何仅在没有数据的postgresql中列出(名称)数据库,角色和数据库的权限?

获取列表数据库postgresql的Bash脚本

sudo -i -u postgres psql  -t -A -c 'SELECT datname FROM pg_database'

但是如何在postgresql中恢复角色和数据库的数据库和关系?

Vao Tsun回答:

  

准备带有数据库列表的sql用于创建使用smth,如:psql -c   "选择'创建数据库' || datname ||';'来自pg_database,其中没有   datistemplate和datname!=' postgres';" - 在> cdbs.sql中创建   列表中的数据库,对新集群使用psql -f cdbs.sql

但是所有恢复的数据库都拥有所有者postgres。 如何与所有者恢复数据库? 感谢

1 个答案:

答案 0 :(得分:0)

从头顶 - 尝试:

  1. 获取所有角色,请使用pg_dumpall -g
  2. 获取权限使用pg_dump -s >to_file.sql,然后psql -f to_file.sql忽略创建错误。
  3. 准备带有数据库列表的sql用于创建使用smth,如:psql -c "select 'create database '||datname||';' from pg_database where not datistemplate and datname != 'postgres';" -At >cdbs.sql,从列表创建数据库,对新集群使用psql -f cdbs.sql