私は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を正しい場所に見せるのですか?
/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
およびpsql
がlibpq
で最初に見つかるように、システムのPATH
を修正することです。詳細はあなたのMac OS XのバージョンとどのPgパッケージをインストールしたかによって異なります。私はMacを使っていませんし、現在利用可能な時間以上の時間を費やすことなしにその面に関する詳細を提供することはできません。
OSXに関する素早い答えは、あなたの環境変数を設定することです。
pGHOST = localhostをエクスポートします。
エクスポートPGPORT = 5432
またはあなたが必要とするものは何でも。
Postgresのデフォルトポートは一般的に以下のように設定されています。
Sudo vi /<path to your installation>/data/postgresql.conf
Ubuntuではこれは次のようになります。
Sudo vi /<path to your installation>/main/postgresql.conf
このファイルでport
を検索してください。
これが起こる最も一般的な理由の1つは、既存のインストールのサービスを停止せずにPostgreSQLの新しいバージョンをインストールした場合です。これも私の頭痛の種でした。特にOS Xでインストールまたはアップグレードする前に、Enterprise DBのワンクリックインストーラを使用する前に、先に進む前に古いインストールのステータスを確認してください。
@ a_horse_with_no_name 's comment のおかげで、pg_env.shのPGPORT定義を5432に変更しました。これで問題は解決しました。 5432でサービスをホストしていたのに、なぜpostgresが最初に5433に設定したのかはわかりません。
私はこの問題にも遭遇しました、それは私が2つのpostgresサーバーを同時に走らせたという結果に終わった。そのうちの1つをアンインストールし、ポートを5432に戻したところ、今正常に動作します。
PgAdmin 4 on Mac OS High Sierraの私の場合、左の列のServersの下のPostrgreSQL1データベースをクリックして、次にPropertiesタブにConnectionの下のポートとして54が表示されました。 (インストール中に5432を選択したので、理由はわかりません)。とにかく、Propertiesタブの下のEditアイコンをクリックして、5432に変更して保存すると、問題は解決しました。図に行きます。