サーバにインストールしたPostgreSQLからRDSのPostgreSQLへのDB-Linkをやってみた

とあるシステム移行で、AWSへの載せ替えを目指すための事前テストとして
現行のPostgreSQL(ver9.5)から、RDSの最新PostgreSQL(ver16)へ外部テーブル接続、所謂DB-Linkができるか検証を行ったのだが
ハマった箇所があった為、備忘録兼紹介として記載したい。

今回のポイントは「認証方式」にある。

RDSのPostgreSQL ver16(ver14以降は)認証方式のデフォルトが、SCRAM認証という認証方式が採用されている。
ところがSCRAM認証に対応しているのは、PostgreSQL ver10以降であり
現行はver9.5から変えられないため、SCRAM認証が使えない! という事になる。
つまり、ver9.5で使われている認証方式である、MD5認証という認証方式に、ver16側を合わせるしかない!

どの認証方式を使うのかは、サーバにPostgreSQLをインストールした場合は、
postgresql.confというファイルのpassword_encryptionに記載されているのでそこを書き換えれば良いのだが・・・
RDSではconfファイルが見れるわけではない(論理的には存在しているはずだが、いじれない)ため
RDS起動時のパラメータで変える手法を取ってみた!

まずはRDSの画面からパラメータグループという画面を開き、パラメータグループを作成、
編集画面から「password_encryption」を検索して、値を「md5」に変えて保存しておく。

そしてRDS起動時に、作成しておいたパラメータグループを使うように選択すると、
認証方式がMD5認証になった、PostgreSQL ver16が出来上がるという寸法!

データベース作成で PostgreSQL ver16を選択し・・・

追加設定で、先ほど作成したパラメータグループを選択

これでRDS ver16を起動した後、SQL「show password_encryption;」にて認証方式を確認してみると・・・
md5になっていた!

あとは予めRDSに作っておいたテーブルに対して、9.5側から外部テーブル作成して、select文を投げて取得できた!

古いバージョンのPostgreSQLを使う場合、認証方式を合わせる必要が出てくるということで、その対応例でした。
他にもpgAdmin3だとver16に対応できず、pgAdmin4だとver9.5に対応できないといった周辺ツールでの悩みなども出たため
新旧バージョンを織り交ぜて使うような環境の場合、このあたり気を付けて挑みましょう!というお話でした。