[解決済み] postgresqlのポートの混乱 5433 or 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がデフォルトで正しい場所を見るようにするにはどうすればいいのか?
解決方法は?
/etc/services
はあくまでも助言であり、よく知られたポートのリストです。実際にそのポートで何かが動いているわけでも、名前のついたサービスがそのポートで動くというわけでもありません。
PostgreSQLの場合、ポート5432が利用可能であれば、それを使用するのが一般的です。もし利用できない場合、ほとんどのインストーラは次に空いているポート、通常は5433を選択します。
実際に何が動いているかは
netstat
ツール(OS X、Windows、Linuxで利用可能で、コマンドラインの構文は3つとも異なる)を使用します。
Mac OS X システムでは、OS に組み込まれた Apple の古いバージョンの PostgreSQL、Postgres.app、Homebrew、Macports、EnterpriseDB インストーラなど、さまざまな PostgreSQL パッケージが乱立しており、さらに複雑になっています。
結局のところ、ユーザーはあるパッケージングからPgをインストールし、サーバーを起動しますが
psql
と
libpq
クライアントを別のパッケージからインストールする必要があります。典型的な例としては、Postgres.app や自作 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を使用していないので、現在利用可能な時間より多くの時間を費やすことなく、その側面についてより多くの詳細を提供することはできません。
関連
-
[解決済み] Rails 4でPostgreSQLサーバーのデフォルトのユーザー名/パスワードは何ですか?
-
[解決済み] PostgreSQLでDATE Differenceを計算する方法は?
-
[解決済み] postgres がサーバー構成の場所を知らない
-
[解決済み] Ubuntu 18.04でPostgreSQLを再起動する方法
-
[解決済み] libpqのソースはどこで手に入りますか?
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み] [Solved] "on delete cascade "制約を追加する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PostgreSQLのCASE ... 複数条件付きEND
-
[解決済み] Psql はサーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません、5432エラー?
-
[解決済み] PostgreSQLのプロセスが "Idle in transaction "である場合、どのような意味がありますか?
-
[解決済み】コマンドラインを使ってpostgresのバックアップファイルをリストアする?
-
[解決済み】Postgresに一括挿入を行う最速の方法は何ですか?
-
[解決済み】なぜPostgreSQLのようなデータベース上でRabbitMQのようなメッセージブローカーが必要なのでしょうか?
-
[解決済み】PostgreSQLでビューのCREATE VIEWコードを見るには?
-
[解決済み】psql: FATAL: ユーザー "dev" のピア認証に失敗しました。
-
[解決済み】PostgreSQL ERROR:リカバリーと競合するため、ステートメントをキャンセルする
-
[解決済み】PostgreSQLでタイムゾーンがある場合とない場合のタイムスタンプの違いについて