如果用户没有设置密码,如何转储Postgres数据库?

时间:2014-05-31 10:54:03

标签: sql database postgresql

我对Postgres没有很多经验,所以我在访问数据库时遇到了一些麻烦,我刚从破坏的Ubuntu服务器中救出来。

我正在尝试做什么:运行postgres的服务器现在已经死了,我只能通过托管公司提供的“rescue mod”访问它。我尝试chroot以使用pg_dumppg_dumpall转储数据库,但似乎服务器无法通过这种方式访问​​。转储尝试通过rescue.ovh.net(OVH作为托管服务提供商)来引导自己,即使我指定-h localhost

所以我提出了一个不同的想法:将整个Postgres文件夹复制到本地计算机,然后转储数据库并继续从此转储开始恢复所有内容。这是你可以在MySQL中做的事情,所以我认为这可能适用于Postgres。

但到目前为止它还没有用。我将/var/lib/postgres文件夹复制到我的本地计算机(注意我本地计算机上的所有者也是postgres用户),但是当我尝试转储数据库时,我无法真正做到这一点。

错误因命令而异:

我的第一次尝试是使用数据库用户转储数据库:

$ pg_dump -U discourse -h localhost > discourse_prod.sql
Password: 
pg_dump: [archiver (db)] connection to database "discourse" failed: fe_sendauth: no password supplied

提示要求输入密码,用户没有密码,但如果我只是按enter它会疼,并且没有提供密码。

我的第二次尝试是通过postgres管理员用户转储:

sudo pg_dump -U postgres discourse_prod > ~/test.sql

我得到pg_dump: [archiver (db)] connection to database "discourse_prod" failed: FATAL: Peer authentication failed for user "postgres"。所以我尝试在尝试转储之前切换用户......

sudo -u postgres pg_dump -Fp discourse_prod > dump.sql

现在似乎没有正确复制数据库:pg_dump: [archiver (db)] connection to database "discourse_prod" failed: FATAL: database "discourse_prod" does not exist

正如我所说的,我对Postgres没有太多经验,而且我的想法已经不多了...关于如何从这些文件中获取转储,我不介意我是否设法从破坏的机器或我本地复制的文件。

有什么想法吗?

0 个答案:

没有答案