PostgreSQL 導入後 サーバに接続できないときの対処法

PostgreSQL をインストールしたばかりのとき、以下のようなエラーを目にすることがあります。

最新の PostgreSQL 11 を Ubuntu 18.04 にインストールした際にも発生することがあります。

このときの解決策として、PostgreSQLをアンインストールして環境を再構築するという記述が、しばしば見受けられます。

それで問題が解決すれば良いのですけれども、同じ問題が再発することがあります。

私の経験上、再インストールによって解決する問題は version を指定せずにパッケージマネージャから RDBMS をインストールして、正しいファイルや設定を読み込めていないことが多いので、そうでない場合にはあまり効果が期待できないです。

では、どうするかと言うと、経験上の判断から locale settings や cluster を見に行くことが多いです。




本題に入る前に、再現性を高めるために、いつものバージョン情報とインストール時の設定を掲載しておきます。

導入時に行ったこと
参照: PostgreSQL: Linux downloads (Ubuntu)

ここまででインストールに成功すると、冒頭 Connection refused error に遭遇することがあるかもしれません。

まずはプログラムが動いているかどうか確認します。動作していないと、そもそも繋がりません。

プログラムが動作していることを確認できましたら、ソケット(プログラムとネットワークの接続口)の状態を見に行きます。

PostgreSQL に接続するために必要なところなので、きちんと動いていれば状態を確認できます。

ここの反応が今はありませんので、うまく行っていませんね。

ということで、現在のクライアント認証はどうなっているのかを見に行きます。

認証設定ファイルは “pg_hba.conf” という名前で保存されていることが伝統なので、探し出して現在の設定を把握します。

ところが、なぜか該当ファイルが見当たらないので、決め打ちで探しにいきます。

そうすると、そこにあるはずのディレクトリが存在しません。

設定の問題以前に、設定ファイルそのものがありません。

ようやく、ここからが本題なのですけれども、必要なファイルが無いときは初期化したり、ツールで作成させると問題の解決につながることもあります。

必要なファイルが揃いますと、設定ファイルも検索で見つかるようになりますし、RDBMS にも接続できるようになります。

これでも、まだ接続できなかったらサーバ側の設定でポートが開放されているか、認証設定はどうなっているかを疑ってください。

まとめますと、インストールされた RDBMS の version と、プログラムの起動状態、クライアント認証、初期化の有無、そして IP アドレスやポートのサーバ設定などを順を追って確認していくと問題の原因に行き当たる確率が高いです。


[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Us