web-dev-qa-db-ja.com

PostgreSQLのポートが混乱する5433または5432?

私はOSXにpostgresqlをインストールしました。 psqlを実行すると、

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"?

ただし、/ etc/servicesから

postgresql      5432/udp    # PostgreSQL Database
postgresql      5432/tcp    # PostgreSQL Database
#                          Tom Lane <[email protected]>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

5433はpyrrhoによって占有され、5432はpgに割り当てられます。私は接続できます

psql -p 5432

しかし、なぜpsqlはそれが5433だと思い、そしてデフォルトでどのようにしてpsqlを正しい場所に見せるのですか?

105
highBandWidth

/etc/servicesは単なる助言です。有名なportsの一覧です。そのポートで実際に何かが実行されているという意味でも、指定されたサービスがそのポートで実行されるという意味でもありません。

PostgreSQLの場合、利用可能であればポート5432を使用するのが一般的です。そうでない場合、ほとんどのインストーラは次の空きポート、通常5433を選択します。

netstatツール(OS X、Windows、およびLinuxで利用可能で、3つすべてでコマンドライン構文が異なります)を使用して、実際に実行されているものを確認できます。

Mac OS Xシステムでは、さまざまなPostgreSQLパッケージのひどい混乱により、OS、Postgres.app、Homebrew、Macports、EnterpriseDBインストーラなどに組み込まれたAppleの古いバージョンのPostgreSQLがさらに複雑になります。

最終的には、ユーザーがPgをインストールして1つのパッケージからサーバーを起動しますが、別のパッケージからpsqlおよびlibpqクライアントを使用します。通常これはPostgres.appまたは自作Pgを実行していて、OSに同梱されているpsqlと接続しているときに発生します。デフォルトポートが異なるだけでなく、Mac OS Xに同梱されているPgではデフォルトのUNIXソケットパスが異なるため、サーバーが同じポートで実行されている場合でもそうではありません。同じUNIXソケットを聞いている。

ほとんどのMacユーザーは、psql -h localhostと一緒にtcp/ipを使用するだけでこれを回避します。必要ならばポートを指定することもできます(例:psql -h localhost -p 5433)。複数のPostgreSQLインスタンスが実行されている可能性があるため、select version()およびSHOW data_directory;を使用して正しいインスタンスに接続していることを確認してください。

UNIXソケットディレクトリを指定することもできます。接続したいPostgreSQLインスタンスのunix_socket_directories設定を確認し、それをpsql -hで指定してください(例:psql -h /tmp)。

より明確な解決策は、実際に実行しているPostgreSQLに関連付けられているPATHおよびpsqllibpqで最初に見つかるように、システムのPATHを修正することです。詳細はあなたのMac OS XのバージョンとどのPgパッケージをインストールしたかによって異なります。私はMacを使っていませんし、現在利用可能な時間以上の時間を費やすことなしにその面に関する詳細を提供することはできません。

153
Craig Ringer

OSXに関する素早い答えは、あなたの環境変数を設定することです。

pGHOST = localhostをエクスポートします。

エクスポートPGPORT = 5432

またはあなたが必要とするものは何でも。

21
DavidLStacy

Postgresのデフォルトポートは一般的に以下のように設定されています。

Sudo vi /<path to your installation>/data/postgresql.conf

Ubuntuではこれは次のようになります。

Sudo vi /<path to your installation>/main/postgresql.conf

このファイルでportを検索してください。

12
Risadinha

これが起こる最も一般的な理由の1つは、既存のインストールのサービスを停止せずにPostgreSQLの新しいバージョンをインストールした場合です。これも私の頭痛の種でした。特にOS Xでインストールまたはアップグレードする前に、Enterprise DBのワンクリックインストーラを使用する前に、先に進む前に古いインストールのステータスを確認してください。

7
Eron Lloyd

@ a_horse_with_no_name 's comment のおかげで、pg_env.shのPGPORT定義を5432に変更しました。これで問題は解決しました。 5432でサービスをホストしていたのに、なぜpostgresが最初に5433に設定したのかはわかりません。

6
highBandWidth

私はこの問題にも遭遇しました、それは私が2つのpostgresサーバーを同時に走らせたという結果に終わった。そのうちの1つをアンインストールし、ポートを5432に戻したところ、今正常に動作します。

3
Krazzzeee

PgAdmin 4 on Mac OS High Sierraの私の場合、左の列のServersの下のPostrgreSQL1データベースをクリックして、次にPropertiesタブにConnectionの下のポートとして54が表示されました。 (インストール中に5432を選択したので、理由はわかりません)。とにかく、Propertiesタブの下のEditアイコンをクリックして、5432に変更して保存すると、問題は解決しました。図に行きます。

1
Alan Simpson