我将数据库移至新服务器,但现在用户无法访问新数据库,我该如何解决这个问题?

我将数据库移至新服务器,但现在用户无法访问新数据库,我该如何解决这个问题?

因此,正如我在过去的问题中提到的那样,我将数据库移到了新服务器,但旧代码无法访问数据库。查询错误(如果有帮助的话):

Warning: pg_connect(): Unable to connect to PostgreSQL server: FATAL: password authentication failed for user someuser

现在,从我在线阅读的内容来看,我认为这需要修改 pg_hba.conf 文件,我的想法是否正确。但是!我找不到这个文件。我的数据库集群存储在 /var/lib/postgresql/9.0 中,但那里没有 pg_hba 文件!有人可能已将其从默认目录中移出,并将其存储在谁也不知道的地方。

所以,我的问题是,我可以通过编辑 pg_hba 文件来解决用户未经过身份验证的问题吗(我曾认为当您执行 pg_dump 并恢复数据库时,经过身份验证的用户会随之出现,但也许这是错的),如果我确实需要访问 pg_hba 文件,我该如何找到它?

如果有帮助的话,我会使用 ubuntu。谢谢大家。

答案1

是的,您需要旧数据库服务器中的 pg_hba.conf 文件。转储和恢复数据库不会复制此文件;它所做的只是转储和恢复表结构及其保存的数据。

pg_hba.conf 文件应位于数据目录下;在默认安装中(至少在 SuSE 上),它将是 /var/lib/pgsql/data/pg_hba.conf。在您的安装中,我认为它将是 /var/lib/postgresql/9.0/pg_hba.conf

您还需要确保获取旧的 postgresql.conf 并将其放在 /var/lib/postgresql/9.0 下。

你可以运行

查找/-name pg_hba.conf

在整个文件系统中搜索名为 pg_hba.conf 的文件

将此文件放到位后,您必须重新加载 Postgres 才能使其生效。

/etc/init.d/postgresql 重新加载

相关内容