如何找到 PostgreSQL 的数据目录?

ran*_*guy 162 postgresql mac-os-x

我忘记了上次是如何启动 PostgreSQL 的(那是几个月前),我不记得数据目录位于何处。该postgres命令似乎需要数据目录的位置。

如果有帮助,我在 MacOsX 上。

/usr/local/postgres 在我的 Mac 上不存在。

使用下面提供的答案,我发现它在这里:

/usr/local/var/postgres
Run Code Online (Sandbox Code Playgroud)

Pet*_*aut 199

如果您可以使用超级用户访问权限连接到数据库,那么

SHOW data_directory;
Run Code Online (Sandbox Code Playgroud)

是最短的路。

如果服务器没有运行并且您忘记了数据目录在哪里,那么您真的必须自己猜测。操作系统特定的约定或 shell 历史记录可能会提供提示。

  • 如果它没有运行,请尝试为 postgresql.conf 运行一个 find,它通常在数据目录中,或者会有关于数据目录的信息。 (9认同)

DrC*_*sos 40

你也可以查询

select setting from pg_settings where name = 'data_directory';
Run Code Online (Sandbox Code Playgroud)

  • pgsql v.10 返回 0 行 (2认同)

小智 30

pg_config 显示了很多信息,包括数据目录:

CONFIGURE = '--disable-debug' '--prefix=/usr/local/Cellar/postgresql/9.3.2' 
            '--datadir=/usr/local/Cellar/postgresql/9.3.2/share/postgresql' 
            '--docdir=/usr/local/Cellar/postgresql/9.3.2/share/doc/postgresql' 
            '--enable-thread-safety' '--with-bonjour' '--with-gssapi' '--with-krb5' 
            '--with-ldap' '--with-openssl' '--with-pam' '--with-libxml' '--with-libxslt'
            '--with-ossp-uuid' '--with-python' '--with-perl' '--with-tcl' 'CC=clang' 
            'CFLAGS=-I/usr/local/Cellar/ossp-uuid/1.6.2/include' 
            'LDFLAGS=-L/usr/local/Cellar/ossp-uuid/1.6.2/lib' 'LIBS=-luuid'
Run Code Online (Sandbox Code Playgroud)

不过,这可能是特定于 brew 的事情;没有 brew 我不知道它显示什么。

  • 我也在用brew。截至目前,“pg_config --configure”中列出的数据目录与“brew info postgresql”推荐的数据目录不同(即“$(brew --prefix)/var/postgres”,并且不是指向列出其中之一)。看来该公式在正确使用配置标志方面有点宽松。 (2认同)

Ada*_*tan 23

在 Ubuntu\Debian 上,试试这个pg_lsclusters命令。

在我的机器上:

pg_lsclusters 
Version Cluster   Port Status Owner    Data directory             Log file
8.4     main      5432 online postgres /home/adam/db/main/data    /home/adam/db/main/log
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 10

如果您无法登录(例如,忘记密码)但服务正在运行,因为 MacOS X 是 posix 变体,您可以随时检查ps它是否作为参数传入:

在运行两个 postgres 实例的 linux 机器上:

-bash-3.2$ ps ax | grep postgres | grep -v postgres:
 4698 ?        S      9:59 /opt/PostgreSQL/8.4/bin/postgres -D /opt/PostgreSQL/8.4/data
 6115 ?        S      8:16 /opt/PostgreSQL/8.4/bin/postgres -D /opt/PostgreSQL/8.4/data_sums
30694 pts/9    S+     0:00 grep postgres
Run Code Online (Sandbox Code Playgroud)


小智 7

OSX 的 PostgreSQL 桌面客户端的现代版本有一个方便的“服务器设置”对话框,不仅可以列出数据目录,还可以直接打开它。

如果您遇到留下锁定文件的随机机器崩溃,则非常有用。

在此处输入图片说明