160

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 をデフォルトで適切な場所に表示するにはどうすればよいですか?

4

7 に答える 7

217

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

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

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

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

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

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

UNIX ソケット ディレクトリを指定することもできます。unix_socket_directories接続したい PostgreSQL インスタンスの設定を確認し、psql -hなどで指定しますpsql -h /tmp

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

于 2013-02-27T00:16:49.537 に答える
8

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

于 2013-03-01T17:34:25.170 に答える
4

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

于 2014-04-07T14:36:11.227 に答える