postgres
命令似乎需要数据目录的位置。 如果有帮助,我就使用MacOsX。
Mac上不存在
/usr/local/postgres
。使用下面提供的答案,我发现它在这里:
/usr/local/var/postgres
#1 楼
如果可以通过超级用户访问权限连接到数据库,则SHOW data_directory;
是最短的方法。
如果服务器未运行并且您忘记了数据目录的位置,那么您真的必须猜测自己。特定于操作系统的约定或外壳历史记录可能会提供提示。
评论
如果未运行,请尝试运行通常在数据目录中的postgresql.conf查找,或者将获得有关数据目录的信息。
– xzilla
2011年12月12日20:15在
谢谢,工作正常。
– kaxi1993
6月4日16:42
#2 楼
您也可以查询select setting from pg_settings where name = 'data_directory';
评论
为pgsql v.10返回0行
– alexkovelsky
19年11月25日在22:52
#3 楼
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'
这可能是特定于Brew的;没有酿造我不知道它显示什么。
评论
我也在用啤酒。截至目前,pg_config --configure中列出的datadir与一个brew info postgresql建议的数据目录不同(它是$(brew --prefix)/ var / postgres,并且不是与列出的符号链接)。似乎该公式对于正确使用配置标志有点松懈。
–Vaz
15年8月12日在21:52
Ubuntu / Debain的注意事项:pg_config未随apt-
–pscl
18年4月20日在20:36
@PSCL是的,但是OP在OS X下。
–戴夫·牛顿
18年4月20日在20:38
明白了只是一个注释,供Debian用户(例如我)将来参考时根据其通用标题绊倒这个问题。
–pscl
18年5月1日23:21
@Tom我不认为该公式真的打算使用传递的datadir进行配置...它期望以命令行arg的形式传递datadir,您可以看到在$()中作为服务自动运行时传递的内容brew --prefix postgresql)/homebrew.mxcl.postgresql.plist,查找-D之后的路径(在我的目录中是/ usr / local / var / postgres)。
–Vaz
18年11月25日在9:55
#4 楼
在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
评论
截至2020年仍可使用
–olidem
1月6日9:10
#5 楼
如果您无法登录(例如,忘记密码)但该服务正在运行,则由于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
#6 楼
用于OSX的PostgreSQL桌面客户端的现代版本具有方便的“服务器设置”对话框,该对话框不仅允许您列出数据目录,而且可以直接打开它。如果遇到随机的计算机崩溃,很有用。留下锁定文件。
评论
该对话框在哪里?我无法通过postgresql.org/download/macosx在9.5的直接安装(不是brew)上找到类似的内容。它确实与pgadmin III一起提供,但是似乎没有此对话框。我找不到任何桌面客户端?
–约翰·利特尔
18-10-8在17:51
#7 楼
打开postgresql.conf,转到以下行:data_directory='/var/lib/postgresql/main/'
是您的答案。
评论
你在哪里找到postgresql.conf
–user5359531
18年11月13日在20:02
@ user5359531您可以找到/ -iname“ postgresql.conf” 2> / dev / null来找出
–汤姆
18年11月21日在16:14
我的postgresql.conf没有定义data_directory。仅在注释中引用它:#data_directory ='ConfigDir'#在另一个目录中使用数据
– SimpleJ
19年3月14日在16:56
#8 楼
在安装了服务器应用程序的OS X 10.8和10.9(非10.10)上,在终端窗口中,键入从那开始,其中包括数据目录。
sudo serveradmin settings postgres
我刚刚在Yosemite(OS X 10.10)中尝试了此操作,并且postgres不再列为serveradmin下的服务(尽管已安装postgres)。
postgres:log_connections = "on"
postgres:unix_socket_directory = "/private/var/pgsql_socket"
postgres:listen_addresses = "127.0.0.1,::1"
postgres:unix_socket_group = "_postgres"
postgres:log_statement = "ddl"
postgres:log_line_prefix = "%t "
postgres:unix_socket_permissions = "0770"
postgres:log_lock_waits = "on"
postgres:logging_collector = "on"
postgres:log_filename = "PostgreSQL.log"
postgres:dataDir = "/Library/Server/PostgreSQL/Data"
postgres:log_directory = "/Library/Logs/PostgreSQL"
未列出postgres
#9 楼
在Windows Server 2012上,由于某些疯狂的原因,命令pg_config
没有显示数据目录。但是我通过查看包含以下行的文件C:\Program Files\PostgreSQL.4\pg_env.bat
找到了它:@SET PGDATA=E:\POSTGRESQL
这就是我需要的答案。
#10 楼
从2个最常见的答案中概括:直接在命令行显示数据目录:
psql -U postgres -tA -c "SHOW data_directory;"
还要查看所有其他定义的文件和目录的路径:
psql -U postgres -c "SELECT name, setting FROM pg_settings WHERE setting LIKE '/%';"
示例输出:
name | setting
-------------------------+------------------------------------------
config_file | /etc/postgresql/9.6/main/postgresql.conf
data_directory | /mnt/pg_ssd_500/9.6/main
external_pid_file | /var/run/postgresql/9.6-main.pid
hba_file | /etc/postgresql/9.6/main/pg_hba.conf
ident_file | /etc/postgresql/9.6/main/pg_ident.conf
ssl_cert_file | /etc/ssl/pg_server.cer
ssl_key_file | /etc/ssl/private/pg_server.key
stats_temp_directory | /var/run/postgresql/9.6-main.pg_stat_tmp
unix_socket_directories | /var/run/postgresql
(9 rows)
(在Windows上,将
LIKE '/%'
替换为LIKE '%/%'
,因为路径以驱动器号开头)#11 楼
如何使用诸如pg_config --bindir
之类的标准实用程序pg_config,还可以获取用于编译PostgreSQL并使用pg_config --configure
解析它们的configure参数。评论
--bindir显示可执行文件的位置,而不是数据目录。 --configure可以,即使必须对输出进行一点解析。
– dezso
17-10-28在21:49
是的,这是正确的,不幸的是pg_config没有显示数据目录的参数。当我写这篇文章时,我认为至少假设datadir不在一个特殊的位置,它提供了一些接近的条件。 datadir将相对于bindir,例如../data
–雅克
17-10-29在22:32
#12 楼
如前所述,还可以使用ps
来捕获数据位置,例如:ps -e |egrep postgres|egrep -E '[[:blank:]]+\-D'| perl -pe 's/^.*[[:blank:]]+-D[[:blank:]]+(\S+).*?$//'
。大多数时候都可以使用。它将在启动时返回类似
/usr/local/pgsql/data
或在PostgreSQL参数中指定的其他地方的内容。#13 楼
根据@Matthew Mark Miller的回答,在使用Postgres 11的macOS 10.14上,它位于:~/Library/Application Support/Postgres
#14 楼
在Fedora和其他可能的Linux发行版上,您可以更改为postgres用户并阅读PGDATA
环境变量。例如:sudo su - postgres
echo ${PGDATA}
/var/lib/pgsql/12/data
#15 楼
由于Mac中存在三种不同的库,因此开发人员通常会对这三种方案感到困惑。但是,可以使用Mac Computer上的两种方法之一找到PostgreSQL目录。1。目录-绝对路径
1)。向上滚动鼠标到Mac屏幕的左上方
2)。点击菜单“开始”
3)。选择“转到文件夹...”
4)。输入路径
/用户/用户名/库/应用程序支持/ Postgres
,请将“用户名”更改为您的名字,例如“ jack”,如下所示。
/用户/ jack /库/应用程序支持/ Postgres
5)。选择按钮“转到”进入Postgres目录。
您最终将找到Postgres。
2。逐步查找目录
1)。向上滚动鼠标到Mac屏幕的左上方。
2)。点击菜单“开始”。
3)。选择按钮“库”
4)。双击文件支架“应用程序支持”。
5)。根据字母顺序找出“ Postgres”。
干杯,
Mike
评论
当您使用Homebrew安装Postgres时,数据为/ usr / local / var / postgres