0

我想找出Postgresql的安装位置,需要对postgresql.conf和pg_hba.conf文件做一些修改,然后重启Postgresql。

有什么方法可以识别出适用于 Windows/Unix/Linux 的安装目录吗?任何帮助或建议将不胜感激。

4

2 回答 2

1

问 PostgreSQL:

SHOW config_file;
SHOW hba_file;

或者:

SELECT current_setting('config_file');
SELECT current_setting('hba_file');

当然,这需要 PostgreSQL 正在运行、侦听 TCP/IP 和默认端口。它还要求您能够进行身份验证。您需要提示用户输入端口(默认为 5432)和凭据。

在不询问正在运行的 PostgreSQL 实例的情况下,没有通用的方法来确定 PostgreSQL 数据目录位置,因为:

  • 可能有不止一个正在运行的 PostgreSQL 实例
  • Mac OS X 上的 PostgreSQL 可能已经通过 Homebrew (Mac OS X)、Postgres.app (Mac OS X)、系统包管理 (Linux)、ports (BSD)、EnterpriseDB 安装程序、各种第 3 方汇总发行版、 .zip 二进制文件,或来自源代码。
  • PostgreSQL 可以从 launchd (Mac OS X)、作为 Windows 服务 (Windows)、从 systemd/upstart/init (Linux/BSD)、由用户手动启动和运行pg_ctl,等等。数据目录可以在启动命令行。

因此,您可以找出 PostgreSQL 数据目录的“位置”的整个想法是错误的。

如果您正在编写依赖 PostgreSQL 的软件,请考虑将您自己的副本与 .zip 二进制文件捆绑在一起,pg_ctl在非默认端口上启动并运行它,这样它就不会干扰用户可能已经安装的任何 PostgreSQL 安装在他们自己的系统上。

于 2012-10-15T12:53:52.303 回答
0

您可以定义自定义环境变量,POSTGRES_HOME并使用它类似于JAVA_HOME

 POSTGRES_HOME  = /usr/local/pgsql
 pg_hba.conf path =  POSTGRES_HOME/data/pg_hba.conf
于 2012-10-15T09:18:49.433 回答