PostgreSQL의 데이터 디렉토리는 어떻게 찾습니까?


123

지난 번 (몇 달 전) PostgreSQL을 시작한 방법을 잊어 버렸고 데이터 디렉토리의 위치를 ​​기억하지 못합니다. 이 postgres명령에는 데이터 디렉토리의 위치가 필요한 것 같습니다.

도움이된다면 MacOsX에 있습니다.

/usr/local/postgres Mac에 없습니다.

아래 제공된 답변을 사용하여 여기에 있음을 알았습니다.

/usr/local/var/postgres

당신이 포스트 그레스를 설치하는 데 브루을 사용하는 경우, 다음 data입니다/usr/local/var/postgres
andrerpena

답변:


152

수퍼 유저 액세스 권한으로 데이터베이스에 연결할 수 있다면

SHOW data_directory;

가장 짧은 방법입니다.

서버가 실행 중이 지 않고 데이터 디렉토리가있는 위치를 잊어 버린 경우 실제로 추측해야합니다. 운영 체제 별 규칙 또는 쉘 히스토리가 힌트를 제공 할 수 있습니다.


7
실행 중이 아닌 경우 일반적으로 data 디렉토리에 있거나 post 디렉토리에 대한 정보가있는 postgresql.conf에 대한 find를 실행하십시오.
xzilla

34

당신은 또한 그것을 쿼리 할 수 ​​있습니다

select setting from pg_settings where name = 'data_directory';

18

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'

그러나 이것은 양조 고유의 것일 수 있습니다. 양조없이 나는 그것이 무엇을 보여주는 지 모른다.


1
나는 맥주도 사용하고 있습니다. 현재, 나열된 datadir pg_config --configurebrew info postgresql권장 되는 것과 동일하지 않습니다 ( 나열된 것과 동일 $(brew --prefix)/var/postgres하지 않음). 공식은 구성 플래그를 올바르게 사용하는 데 약간 느슨해 보입니다.
Vaz

Ubuntu / Debain 참고 사항 : pg_config는 postgresql-<ver>apt 패키지 와 함께 설치되지 않지만 다음 사항도 필요합니다.postgresql-server-dev-<ver>
pscl

@PSCL True, 그러나 운영 체제는 OS X에 따라 다릅니다.
Dave Newton

이해했다. 장래의 데비안 사용자 (예를 들어, 나 자신)가 일반적인 제목을 기준으로이 질문에 걸려 넘어지는 것에 대한 참고 사항.
pscl

1
@ 톰 나는 당신이 그것을에서 서비스로 자동으로 실행 때에 전달되는 것을 볼 수 있습니다, 그것은 명령 줄 인수로 DATADIR을 통과 할 것으로 예상 ... 공식 정말 구성에 전달 된 DATADIR를 사용하도록 생각하지 않는다 $(brew --prefix postgresql)/homebrew.mxcl.postgresql.plist봐 다음 경로를 위해 -D(그것은 /usr/local/var/postgres내 위에 있습니다).
Vaz

16

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

8

로그인 할 수 없지만 (예를 들어, 비밀번호를 잊어 버렸지 만) 서비스가 실행 중입니다. 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

2

postgresql.conf를 열고 다음 줄로 이동하십시오.

data_directory='/var/lib/postgresql/main/'

당신의 대답입니다.


어디서 찾을 수 postgresql.conf
있습니까?

@ 당신은 할 수 user5359531 find / -iname "postgresql.conf" 2>/dev/null

내 정의 postgresql.conf가 없습니다 data_directory. 주석에서만 참조됩니다 :#data_directory = 'ConfigDir' # use data in another directory
SimpleJ

2

OSX 용 PostgreSQL 데스크탑 클라이언트의 최신 버전에는 편리한 "서버 설정"대화 상자가있어 데이터 디렉토리를 나열 할뿐만 아니라 직접 열 수 있습니다.

잠금 파일 뒤에 남겨진 임의의 시스템 충돌이 발생하는 경우 매우 유용합니다.

여기에 이미지 설명을 입력하십시오


이 대화는 어디에 있습니까? postgresql.org/download/macosx 를 통해 9.5의 직접 설치 (양조하지 않음)에서 이와 같은 것을 찾을 수 없습니다 . pgadmin III와 함께 제공되지만이 대화 상자가없는 것 같습니다. 데스크톱 클라이언트를 찾을 수 없습니까?
John Little

1

서버 앱이 설치된 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를 나열하지 않습니다


1

Windows Server 2012 pg_config에서이 명령 은 몇 가지 미친 이유로 데이터 디렉토리를 표시하지 않았습니다. 그러나 나는 C:\Program Files\PostgreSQL\9.4\pg_env.bat이 줄을 포함 하는 파일을보고 그것을 찾았습니다 .

@SET PGDATA=E:\POSTGRESQL

그것이 내가 필요한 답이었습니다.


0

pg_config --bindirOne 과 같은 표준 유틸리티 pg_config를 사용하는 방법은 PostgreSQL을 컴파일하고 파싱하는 데 사용되는 구성 매개 변수를 얻을 수도 있습니다.pg_config --configure


--bindir데이터 디렉토리가 아닌 실행 파일의 위치를 ​​보여줍니다. --configure출력을 조금 파싱해야하지만 OK입니다.
dezso

그렇습니다. 불행히도 pg_config에는 datadir을 나타내는 매개 변수가 없습니다. 내가 이것을 쓸 때 나는 datadir이 특별한 위치에 있지 않다고 가정 할 때 적어도 그것이 가까운 것을 줄 것이라고 생각했다. datadir은 ../data
Jacques

0

지적했듯이 ps다음과 같은 데이터 위치를 캡처하는 데 사용할 수도 있습니다 .

ps -e |egrep postgres|egrep -E '[[:blank:]]+\-D'| perl -pe 's/^.*[[:blank:]]+-D[[:blank:]]+(\S+).*?$/$1/'.

이것은 대부분의 시간에 작동합니다. /usr/local/pgsql/data시작시 PostgreSQL의 매개 변수에 지정된 것과 같 거나 다른 곳을 반환합니다 .


0

@Matthew Mark Miller의 답변을 바탕으로 Postgres 11을 사용하는 macOS 10.14에서는 다음 위치에 있습니다.

~/Library/Application Support/Postgres

0

두 가지 주요 답변에서 일반화 :

명령 행에서 직접 데이터 디렉토리를 표시하려면 다음을 수행하십시오.

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 '%/%'경로는 드라이브 문자로 시작하기 때문에)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.