配置pg_hba.conf文件以允许从其他服务器访问数据库


15

我在一台服务器上有一个postgres数据库,我需要从另一台服务器访问它。

我需要编辑pg_hba.conf文件,但现在知道编辑此文件的步骤是什么。服务器中心

我需要在文件中添加以下行

host    all         all         10.0.2.12         255.255.255.255   trust

我把它放在 var/lib/pgsql/data/

现在基本上我不确定执行此操作的正确步骤是什么

Answers:


14

首先获取给定pg_hba.conf的备份副本

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

这样,如果您搞砸了,就可以准备较旧的版本。tar存档的一个不错的功能是保留权限和目录。因此,当pg_hba.conf被破坏时无法识别。您可以:

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

这将从先前创建的归档文件中还原备份pg_hba.conf。

至于实际插入的行:

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(注意:命令已编辑。感谢bortzmeyer!)

应该做。注意,这只是将行追加到pg_hba.conf中。如果需要更改它,则必须使用实际的编辑器。就像vi。它的学习曲线可能会有些陡峭,但是至少在您了解了基础知识之后,您在遇到的每个Unix环境中都应该非常安全。

现在我回到正轨,接下来应该尝试重新启动postgresql数据库。我相信在Centos机器上,这是通过以下方式完成的:

sudo service postgresql restart

或者您可以不重新启动就重新加载配置:

su - postgres
pg_ctl reload

现在您应该可以从10.0.2.12访问Centos机器的postrgresql数据库


1
最后一个命令中的sudo无效,因为特权操作是通过重定向完成的,重定向是由Shell处理的,而不是由您使用sudo运行的程序(在这种情况下为echo)处理的。
bortzmeyer

好点子!它应该写为sudo“ echo'host all all 10.0.2.12 255.255.255.255 trust'>> /var/lib/pgsql/data/pg_hba.conf”
pyhimys 2009年

理想的方法是将其置于版本控制下的管理员位置,并在通过SSH等更改它后进行部署
vfclists 2012年

1
pg_hba.conf文件的默认位置在9.4中与/var/lib/pgsql/9.4/data/pg_hba.conf有所不同。
谢尔盖·弗拉索夫

13

不要忘记编辑postgresql.conf并更改/添加行

listen_addresses = '*'

默认情况下Postgresql在localhost上侦听


您的list_addresses示例不是太宽松了吗?如果服务器在多个IP上运行,那就是一个巨大的安全漏洞,即公共,内部,VPN等
。– vfclists 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.