postgresqlポートの混乱5433または5432?


128

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 <tgl@sss.pgh.pa.us>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

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

psql -p 5432

しかし、なぜpsqlはそれが5433であると考え、なぜデフォルトでpsqlを正しい場所に表示させるのですか?


5
環境変数がないか確認してくださいPGPORT定義されていますpostgresql.org/docs/current/static/libpq-envars.html
a_horse_with_no_name

回答:


187

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

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

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

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

結局のところ、ユーザーはPgをインストールして、あるパッケージからサーバーを起動しますが、別のパッケージからpsqllibpqクライアントを使用します。通常、これはPostgres.appまたはhomebrew Pgを実行してpsqlいて、OSに同梱されているものに接続しているときに発生します。デフォルトポートが異なる場合があるだけでなく、Mac OS Xに同梱されているPgのデフォルトUNIXソケットパスも異なるため、サーバーが同じポートで実行されていても、同じUNIXソケットをリッスンしません。

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

UNIXソケットディレクトリを指定することもできます。チェックunix_socket_directoriesあなたがに接続してそれを指定したいのPostgreSQLインスタンスの設定をpsql -h、例えばpsql -h /tmp

クリーナー液は、お使いのシステムを修正するためにあるPATHように、psqlそしてlibpqあなたが実際に実行しているのPostgreSQLと関連するが、最初に見つかったものですPATH。その詳細は、Mac OS XのバージョンとインストールしたPgパッケージによって異なります。私はMacを使用していないので、現在利用できる時間よりも多くの時間を費やすことなく、その面ではるかに詳細な情報を提供することはできません。


23

OSXで簡単に答えて、環境変数を設定します。

>export PGHOST=localhost

>export PGPORT=5432

または必要なものは何でも。


16

Postgresのデフォルトポートは、一般的に次のように構成されています。

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

Ubuntuの場合、次のようになります。

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

portこのファイルを検索します。


BigSQLしたMac OSX上で、それがここにあるディストリビュー:~/PostgreSQL/data/pg96
シェーン

7

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


7

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


はい、9.4が既にインストールされているときにpostgresql-9.5をインストールしたため、9.5は5433をデフォルトのポートとして選択しました
vikingsteve

私は5432と5433を長い間使用してきましたが、5436は見ましたが、それが誰かの創造性か、異なるOS-ESのデフォルトかどうかはわかりません。
Deil、

3

私もこの問題に遭遇し、2つのpostgresサーバーが同時に実行されていました。私はそのうちの1つをアンインストールして、ポートを5432に戻し、今は正常に動作しています。


2

私にとってでpgAdminで4のMac OSハイシエラクリックすると、PostrgreSQL10の下にデータベースサーバを左側の列に、そしてプロパティ ]タブには、示した5433を下のポートとして接続。(インストール中に5432を選択したため、理由はわかりません)。とにかく、[ プロパティ ]タブの[ 編集 ]アイコンをクリックし、それを5432に変更して保存すると、問題が解決しました。図を行きます。


実行するのは、既に5432で実行されているサーバーに接続できることだけです。これが、接続後に接続できる理由です。あなたが正しく述べたように、サーバーはインストールごとに5432で実行されていました。
シェーン、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.