PostgreSQL'in veri dizinini nasıl bulabilirim?


123

PostgreSQL'i en son nasıl başlattığımı unuttum (aylar önceydi) ve veri dizininin nerede olduğunu hatırlamıyorum. postgresKomut veri dizininin tutulması şart gibi görünüyor.

Bu yardımcı olursa MacOsX'tayım.

/usr/local/postgres Mac'imde yok.

Aşağıda verilen cevapları kullanarak, burada olduğunu buldum:

/usr/local/var/postgres

Homebrew'i Postgres'i kurmak için kullandığınızda, o datazaman/usr/local/var/postgres
andrerpena

Yanıtlar:


152

Süper kullanıcı erişimine sahip veritabanına bağlanabiliyorsanız,

SHOW data_directory;

en kısa yoldur.

Sunucu çalışmıyorsa ve veri dizininin nerede olduğunu unuttuysanız, gerçekten kendinizi tahmin etmeniz gerekir. İşletim sistemine özgü bir kongre veya kabuk geçmişi, ipuçları sağlayabilir.


7
çalışmıyorsa, genellikle veri dizininde bulunan veya veri dizini hakkında bilgi sahibi olan postgresql.conf için bir bulma çalıştırmayı deneyin.
xzilla

34

Ayrıca bunun için sorgulayabilirsiniz

select setting from pg_settings where name = 'data_directory';

18

pg_config veri dizini dahil birçok bilgiyi gösterir:

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'

Bu, bir demleme özgü şey olabilir; demlemeden neyi gösterdiğini bilmiyorum.


1
Ben de demlemek kullanıyorum. Şu an itibariyle, listelenen datadir pg_config --configureöğesinin brew info postgresqlönerdiği ile aynı değil ( $(brew --prefix)/var/postgreslistelenene bir işaret değil). Formülün uygun şekilde config bayraklarını kullanmak konusunda biraz gevşek olduğu görülüyor.
Vaz

Ubuntu / Debain için not: pg_config postgresql-<ver>apt paketi ile birlikte kurulmaz , fakat ayrıca gerektirirpostgresql-server-dev-<ver>
pscl

@PSCL Doğru, ancak OP OS X altındaydı
Dave Newton

Anladım. Gelecekte, Debian kullanıcılarının (kendim gibi) referansı için bu notun genel unvanına dayanan bir not.
pscl

1
@Tom formülü gerçekten yapılandırmak için geçirilen datadir'i kullanmak için tasarlandığını sanmıyorum ... datadir'i bir komut satırı argümanı olarak geçirmeyi umuyor, otomatik olarak bir servis olarak çalıştırıldığında ne geçtiğini görebilirsiniz $(brew --prefix postgresql)/homebrew.mxcl.postgresql.plist, bakın izleyen yol için -D( /usr/local/var/postgresbenim üzerimde).
Vaz

16

Ubuntu \ Debian'da pg_lsclusterskomutu deneyin .

Benim makinede:

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

Giriş yapamıyorsanız (örneğin, şifrenizi unuttuysanız) ancak hizmet çalışıyorsa, MacOS X bir posix değişkeni olduğundan, her zaman psbir argüman olarak iletilip iletilmediğini kontrol edebilirsiniz :

Çalışan iki postgres örneği bulunan bir linux kutusunda:

-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 dosyasını açın, satıra gidin:

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

Cevabınız


nerede bulabilirimpostgresql.conf
user5359531

@ Sen yapabilirsin user5359531 find / -iname "postgresql.conf" 2>/dev/nullöğrenmek için
Tom

Benim tanımlanmış postgresql.confyok data_directory. Sadece bir yorumda referans:#data_directory = 'ConfigDir' # use data in another directory
SimpleJ

2

OSX için PostgreSQL masaüstü istemcisinin modern sürümlerinde, yalnızca veri dizinini listelemenizi değil, doğrudan açmanızı sağlayan uygun bir "Sunucu Ayarları" iletişim kutusu bulunur.

Bir kilit dosyasının arkasında bırakan rastgele bir makine çökmesi yaşarsanız, çok faydalıdır.

görüntü tanımını buraya girin


Bu diyalog nerede? Bunun gibi herhangi bir şeyi postgresql.org/download/macosx aracılığıyla 9.5 doğrudan kurulumunda (demlenmeden) bulamıyorum . Pgadmin III ile geliyor, ancak bu diyalogda görünmüyor. Masaüstü istemcisi bulamıyorum?
John Little

1

OS X 10.8 ve 10.9'da (10.10 değil) sunucu uygulaması yüklüyken, terminal penceresinde yazın.

sudo serveradmin settings postgres

OS X 10.9 Mavericks'te bu, veri dizinini içeren çıktığım çıktı.

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"

Bunu sadece Yosemite'de (OS X 10.10) denedim ve postgres artık serveradmin altında bir servis olarak listelenmiyor (postgres kurulu olmasına rağmen).

sudo serveradmin list

postgresler listelenmiyor


1

Windows Server 2012'de komut pg_config, bazı çılgınca nedenlerden dolayı veri dizinini göstermedi. Ancak C:\Program Files\PostgreSQL\9.4\pg_env.batbu satırı içeren dosyaya bakarak buldum :

@SET PGDATA=E:\POSTGRESQL

İhtiyacım olan cevap buydu.


0

pg_config --bindirOne gibi pg_config standart yardımcı programını kullanarak PostgreSQL'i derlemek ve bunları ayrıştırmak için kullanılan configure parametrelerini alabilir.pg_config --configure


--bindirveri dizinini değil çalıştırılabilir dosyaların yerlerini gösterir. --configureTamam, bir tanesi çıktıyı biraz ayrıştırmak zorunda olsa da.
dezso

Evet, bu doğru ve maalesef pg_config, datadir 'i gösterecek bir parametreye sahip değildir. Bunu yazdığımda, datadir'in özel bir konumda olmadığını varsayarak en azından yakın bir şey verdiğini düşündüm. datadir, daha sonra ../data
Jacques

0

Belirtildiği gibi, biri aşağıdaki psgibi veri konumunu yakalamakta da kullanılabilir

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

Bu çoğu zaman işe yarayacak. Başlangıçta /usr/local/pgsql/dataPostgreSQL'in parametrelerinde belirtildiği gibi veya başka bir yerde bir şey döndürürdü .


0

@Matthew Mark Miller'ın cevabına dayanarak, MacOS 10.14'te Postgres 11 kullanarak

~/Library/Application Support/Postgres

0

En iyi 2 cevaptan genelleme:

Veri dizinini doğrudan komut satırında göstermek için:

psql -U postgres -tA -c "SHOW data_directory;"

Diğer tüm dosya ve dizin yollarını da görmek için:

psql -U postgres -c "SELECT name, setting FROM pg_settings WHERE setting LIKE '/%';"

Örnek çıktı:

          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'ta, yerini LIKE '/%'ile LIKE '%/%'yolu bir sürücü harfi ile başlayan çünkü)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.