はじめに
本当は新しいNpgsql.dllを使ったほうが良いことは分かってるんだけど、上司やコストという大いなる意思のためどうしても古いやつで接続しなきゃいけない…という時のメモです。
セキュリティ的にあまり良くない対策なので実行する際は注意です。
また、記事の内容に間違いや勘違いがあった場合はご指摘いただけると助かります。
エラーが出ていた状況
- PostgreSQL 9.1.9で動いていたシステムを最新のPostgreSQL(現時点で14.1)に変更しないといけない
- DBは14.1に変更済
- ソースコードやdllは変更できない
単純に当時のdllを使ってアクセスすると以下のエラーが出てしまいます。
Only AuthenticationClearTextPassword and AuthenticationMD5Password supported for now. Received: 10
AuthenticationClearTextPasswordかAuthenticationMD5Passwordじゃないと受け付けませんよという内容がPostgreSQL 14.1から出ているわけです。
なのでこれを他のも行けるように変更します。
対策:confファイルの書き換え
pg_hba.conf
PostgreSQLをインストールした際、データディレクトリとして指定したフォルダにこういう名前のファイルが作られます。これを任意のテキストエディタで開いてください。
METHOD
この列があると思います。
これの設定が「md5」とかそういう値になっているかと思います。これを全部「trust」に書き換えてください。
これはサーバに接続してくる人全員を信じて許可するという心の広い認証です。なのでこれで接続ができるようになります。
参考→PostgreSQL 認証方式
おわりに
新しいやつを使ったほうが良いどころか使うべきなのは分かってはいるんですけど、どうしてもやらなきゃいけない時というのがあるということでご勘弁ください。