PostgreSQLのデータディレクトリを見つけるにはどうすればよいですか?


124

前回(数か月前に)PostgreSQLを起動した方法を忘れてしまいました。データディレクトリの場所を覚えていません。このpostgresコマンドには、データディレクトリの場所が必要なようです。

それが助けになれば、MacOsXにいます。

/usr/local/postgres 私のMacには存在しません。

下記の回答を使用して、ここにあることがわかりました。

/usr/local/var/postgres

あなたはPostgresのをインストールするために自作を使用すると、その後data/usr/local/var/postgres
andrerpena

回答:


154

スーパーユーザーアクセスでデータベースに接続できる場合、

SHOW data_directory;

最短の方法です。

サーバーが実行されておらず、データディレクトリの場所を忘れた場合は、実際に推測する必要があります。オペレーティングシステム固有の規則またはシェル履歴がヒントを提供する場合があります。


7
実行されていない場合は、postgresql.confの検索を実行してみてください。通常はデータディレクトリにあるか、データディレクトリに関する情報が含まれています。
xzilla

35

クエリすることもできます

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 --configureと同じではないbrew info postgresql(これはお勧めし$(brew --prefix)/var/postgres、列挙されたものとシンボリックリンクではありません)。公式は設定フラグを適切に使用するのに少し緩いようです。
Vaz

Ubuntu / Debainに関する注意:pg_configはpostgresql-<ver>aptパッケージと共にインストールされませんが、次も必要ですpostgresql-server-dev-<ver>
pscl

@PSCL真、しかし、OPはOS Xの下にあった
デイブ・ニュートン

わかった。Debianユーザー(私のような)の将来の参照のためのメモは、その一般的なタイトルに基づいてこの質問につまずきました。
pscl

1
@Tomは、式が実際にconfigureに渡される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されている場合、引数として渡されているかどうかを常に確認できます。

2つの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

@ user5359531 find / -iname "postgresql.conf" 2>/dev/null見つけるためにできること
トム

私にpostgresql.confdata_directory定義がありません。コメントでのみ参照されます:#data_directory = 'ConfigDir' # use data in another directory
SimpleJ

2

OSX用PostgreSQLデスクトップクライアントの最新バージョンには、データディレクトリを一覧表示するだけでなく、直接開くことができる便利な[サーバー設定]ダイアログがあります。

ロックファイルが残るランダムなマシンクラッシュが発生した場合に非常に便利です。

ここに画像の説明を入力してください


このダイアログはどこにありますか?postgresql.org/download/macosxを介した9.5の直接インストール(醸造ではない)でこのようなものを見つけることはできません。pgadmin IIIに付属していますが、このダイアログはないようです。デスクトップクライアントが見つかりませんか?
ジョンリトル

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出力を少し解析する必要がある場合でも、問題ありません。
-dezso

はい、それは本当であり、残念ながらpg_configにはdatadirを明らかにするパラメータがありません。私がこれを書いたとき、datadirが特別な場所にないことを前提として、少なくとも何か近いものを与えると考えました。datadirは、.. / dataなどのbindirに対して相対的です
ジャック

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の回答に基づいて、macOS 10.14でPostgres 11を使用すると、次の場所にあります。

~/Library/Application Support/Postgres

0

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 '%/%'、パスはドライブ文字から始まるため)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.