トップ  »  コンピュータガイド  »  ツール&ユーティリティ  »  CSE  »  "Win32版PostgreSQL8.1"にCSEで接続する際の問題点

"Win32版PostgreSQL8.1"にCSEで接続する際の問題点

私が以前私的なブログにメモ代わりに書き込んだ記事に同じトラブル抱えて検索サイト経由で来る人がいたので、まとめ直してみました。
因に、現在そちらのブログは閉鎖しています。

トラブルの内容

Windows版のPostgreSQL8.1CSEを使って接続しようとすると、以下のようなエラーが出て接続できませんでした。

アプリケーション実行中に以下のエラーが発生しました。

エラー内容:
データベース接続時にエラーが発生しました。

DBエラー詳細:
fe_sendauth: authentication type 5 not supported

実際のエラーダイアログ(WindowsXP):
DB接続に出たエラーメッセージ

原因

さて、ここで重要なのがエラーメッセージの内容です。
「DBエラー詳細:」の部分を見ると「fe_sendauth: authentication type 5 not supported」となっています。
この内容からすると"認証のタイプ5はサポートしていない"為に接続不能になっているようです。
認証のタイプ5とは"MD5"という認証や暗号化などに使われるハッシュ関数の事です。

という事は、"PostgreSQL8.1"か"CSE1.59"のどちらかがこれに対応していないという事になりますが、 "PostgreSQL8.1"は対応しているのです。
念の為、「C:\Program Files\PostgreSQL\8.1\data\pg_hba.conf」でユーザ認証の設定を確認してみます。

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# IPv4 local connections:
host	 all	 all	 127.0.0.1/32	 md5

やはり、"METHOD"の指定で"MD5"を使うように設定していました。
という事は、CSEが"MD5"非対応という事になります。
PostgreSQLへの接続には"インターウィズさん"の"日本語Windows版 libpq.dll"を使っているので、正確には"libpq.dll"が非対応という事になります。

"インターウィズ ホームページ"で確認して頂くとわかるのですが、"日本語Windows版 libpq.dll"はPostgreSQL6.5に付属している"libpq.dll"をベースに日本語環境に合わせてコンパイルしなおしたものです。
そして、PostgreSQL6.5は"MD5"に対応していません。
つまり、これが原因という訳です。

解決策

原因の項で書いたとおり、"日本語Windows版 libpq.dll"が"MD5"非対応の為に今回のエラーが起きている訳ですから、一番手っ取り早い方法としてPostgreSQLの認証設定を変更してあげれば解決するはずです。

「C:\Program Files\PostgreSQL\8.1\data\pg_hba.conf」をテキストエディタなどで開いて、"METHOD"の指定を"md5"から"password"に変更します。

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# IPv4 local connections:
host	 all	 all	 127.0.0.1/32	 md5

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# IPv4 local connections:
host	 all	 all	 127.0.0.1/32	 password

変更したら保存して、「pg_hba.conf」は閉じて、PostgreSQLを再起動します。
確認のため、CSEを使ってPostgreSQLに接続してみます。
今度は何のエラーも無くサクッと繋がりました。

認証設定で"password"を指定すると認証データはプレーンなテキスト状態でやり取りされます。
もし、インターネットなどのオープンなネットワーク経由で接続する場合には認証情報の搾取や改竄の恐れがありますのでご注意ください。
ま、あまりその様な環境で直接DBに接続する事自体ないでしょうけど...。
開発中は"password"にしておいて、リリースする際に"md5"に戻すというのが妥当でしょう。

トラックバック(0)

トラックバックURL: http://www.ezms.net/mt/mt-tb.cgi/33