it-swarm-eu.dev

Jak najdu datový adresář PostgreSQL?

Zapomněl jsem, jak jsem naposledy spustil PostgreSQL (to bylo před měsíci) a nepamatuji si, kde je umístěn datový adresář. Zdá se, že příkaz postgres vyžaduje umístění datového adresáře.

Jsem na MacOsXu, pokud to pomůže.

/usr/local/postgres na mém počítači Mac neexistuje.

Pomocí níže uvedených odpovědí jsem zjistil, že to bylo tady:

/usr/local/var/postgres
134
randomguy

Pokud se můžete připojit k databázi s přístupem superuživatele, pak

SHOW data_directory;

je nejkratší cesta.

Pokud server nefunguje a vy jste zapomněli, kde byl datový adresář, musíte se opravdu uhodnout. Rady specifické pro operační systém nebo historie prostředí mohou poskytovat rady.

168
Peter Eisentraut

Můžete také dotazovat

select setting from pg_settings where name = 'data_directory';
38
DrColossos

pg_config zobrazuje spoustu informací včetně datového adresáře:

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'

To by ale mohla být věc specifická pro pivo; bez vaření nevím, co to ukazuje.

19
Dave Newton

Na Ubuntu\Debian zkuste pg_lsclusters příkaz.

Na mém stroji:

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
17
Adam Matan

Pokud se nemůžete přihlásit (např. Zapomněli jste své heslo), ale služba je spuštěna, protože MacOS X je varianta posixu, můžete vždy zkontrolovat ps a zjistit, zda se předává jako argument:

Na linuxové krabici se dvěma spuštěnými instancemi postgresu:

-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
9
Joe

Moderní verze desktopového klienta PostgreSQL pro OSX mají pohodlný dialog „Nastavení serveru“, který vám umožní nejen výpis datového adresáře, ale také jej přímo otevřít.

Velmi užitečné, pokud dojde k náhodnému selhání počítače, které zanechá soubor zámku.

enter image description here

4

Otevřete postgresql.conf, přejděte na řádek:

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

je vaše odpověď.

4
Ronaldinho

Zobecnění ze 2 hlavních odpovědí:

Zobrazení datového adresáře přímo na příkazovém řádku:

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

Chcete-li také zobrazit všechny ostatní definované cesty k souborům a adresářům:

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

Ukázkový výstup:

          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)

(V systému Windows nahraďte LIKE '/%' s LIKE '%/%' protože cesta začíná písmenem jednotky)

1
mivk

V systému Windows Server 2012 příkaz pg_config neodhalil datový adresář z nějakého šíleného důvodu. Ale našel jsem to při pohledu na soubor C:\Program Files\PostgreSQL\9.4\pg_env.bat, který obsahoval tento řádek:

@SET PGDATA=E:\POSTGRESQL

To byla odpověď, kterou jsem potřeboval.

1
user3618269

V OS X 10.8 a 10.9 (ne 10.10) s nainstalovanou serverovou aplikací zadejte do terminálového okna text

Sudo serveradmin settings postgres

V OS X 10.9 Mavericks je to výstup, který získám z toho, který obsahuje datový adresář.

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"

Jen jsem to zkusil v Yosemite (OS X 10.10) a postgres již není uveden jako služba pod serveradmin (ačkoli postgres je nainstalován).

Sudo serveradmin list

neuvede postgres

1
Jason S

Jak používat standardní utilitu pg_config, například pg_config --bindir Jeden mohl také získat konfigurační parametry použité pro kompilaci PostgreSQL a analyzovat je s pg_config --configure

0
Jacques

Na Fedoře a pravděpodobně několika dalších linuxových distribucích můžete změnit uživatele postgresu a přečíst si proměnnou prostředí PGDATA. Např.:

Sudo su - postgres
echo ${PGDATA}
/var/lib/pgsql/12/data
0
dbdemon

Na základě odpovědi @Matthew Mark Miller, na MacOS 10.14 pomocí Postgres 11 je umístěn na:

~/Library/Application Support/Postgres
0
Navid

Jak bylo zdůrazněno, dalo by se také použít ps k zachycení datového umístění, jako například:

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

Většinou to bude fungovat. Vrátilo by to něco jako /usr/local/pgsql/data nebo kdekoli jinde to bylo specifikováno v parametrech PostgreSQL při spuštění.

0
Jacques