답변:
수퍼 유저 액세스 권한으로 데이터베이스에 연결할 수 있다면
SHOW data_directory;
가장 짧은 방법입니다.
서버가 실행 중이 지 않고 데이터 디렉토리가있는 위치를 잊어 버린 경우 실제로 추측해야합니다. 운영 체제 별 규칙 또는 쉘 히스토리가 힌트를 제공 할 수 있습니다.
당신은 또한 그것을 쿼리 할 수 있습니다
select setting from pg_settings where name = 'data_directory';
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'
그러나 이것은 양조 고유의 것일 수 있습니다. 양조없이 나는 그것이 무엇을 보여주는 지 모른다.
pg_config --configure
은 brew info postgresql
권장 되는 것과 동일하지 않습니다 ( 나열된 것과 동일 $(brew --prefix)/var/postgres
하지 않음). 공식은 구성 플래그를 올바르게 사용하는 데 약간 느슨해 보입니다.
postgresql-<ver>
apt 패키지 와 함께 설치되지 않지만 다음 사항도 필요합니다.postgresql-server-dev-<ver>
$(brew --prefix postgresql)/homebrew.mxcl.postgresql.plist
봐 다음 경로를 위해 -D
(그것은 /usr/local/var/postgres
내 위에 있습니다).
로그인 할 수 없지만 (예를 들어, 비밀번호를 잊어 버렸지 만) 서비스가 실행 중입니다. 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
postgresql.conf를 열고 다음 줄로 이동하십시오.
data_directory='/var/lib/postgresql/main/'
당신의 대답입니다.
postgresql.conf
find / -iname "postgresql.conf" 2>/dev/null
알
postgresql.conf
가 없습니다 data_directory
. 주석에서만 참조됩니다 :#data_directory = 'ConfigDir' # use data in another directory
OSX 용 PostgreSQL 데스크탑 클라이언트의 최신 버전에는 편리한 "서버 설정"대화 상자가있어 데이터 디렉토리를 나열 할뿐만 아니라 직접 열 수 있습니다.
잠금 파일 뒤에 남겨진 임의의 시스템 충돌이 발생하는 경우 매우 유용합니다.
서버 앱이 설치된 OS X 10.8 및 10.9 (10.10 아님)의 경우 터미널 창에 다음을 입력하십시오.
sudo serveradmin settings postgres
OS X 10.9 Mavericks에서 이것은 데이터 디렉토리를 포함하여 그 결과를 얻습니다.
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"
방금 Yosemite (OS X 10.10) 에서이 작업을 시도했으며 postgres는 더 이상 serveradmin에서 서비스로 표시되지 않습니다 (postgres가 설치되어 있음에도 불구하고).
sudo serveradmin list
postgres를 나열하지 않습니다
Windows Server 2012 pg_config
에서이 명령 은 몇 가지 미친 이유로 데이터 디렉토리를 표시하지 않았습니다. 그러나 나는 C:\Program Files\PostgreSQL\9.4\pg_env.bat
이 줄을 포함 하는 파일을보고 그것을 찾았습니다 .
@SET PGDATA=E:\POSTGRESQL
그것이 내가 필요한 답이었습니다.
pg_config --bindir
One 과 같은 표준 유틸리티 pg_config를 사용하는 방법은 PostgreSQL을 컴파일하고 파싱하는 데 사용되는 구성 매개 변수를 얻을 수도 있습니다.pg_config --configure
--bindir
데이터 디렉토리가 아닌 실행 파일의 위치를 보여줍니다. --configure
출력을 조금 파싱해야하지만 OK입니다.
두 가지 주요 답변에서 일반화 :
명령 행에서 직접 데이터 디렉토리를 표시하려면 다음을 수행하십시오.
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 '%/%'
경로는 드라이브 문자로 시작하기 때문에)
data
입니다/usr/local/var/postgres