我对Postgres没有很多经验,所以我在访问数据库时遇到了一些麻烦,我刚从破坏的Ubuntu服务器中救出来。
我正在尝试做什么:运行postgres的服务器现在已经死了,我只能通过托管公司提供的“rescue mod”访问它。我尝试chroot
以使用pg_dump
或pg_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没有太多经验,而且我的想法已经不多了...关于如何从这些文件中获取转储,我不介意我是否设法从破坏的机器或我本地复制的文件。
有什么想法吗?