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