「SQL」カテゴリーのロゴ

【PostgreSQL】no pg_hba.conf entry for hostというエラーの対処法

困ったこと

const sequelize = new Sequelize(
  "<データベース名>",
  "<ロール名>",
  "<パスワード>",
  {
    host: "<ホスト名>",
    dialect: "postgres",
  }
);

Node.jsのORMライブラリ「Sequelize」を使っており、その初期化をしようとしたら

no pg_hba.conf entry for host

上のようなエラーが出た。

解決法

 const sequelize = new Sequelize(
   "<データベース名>",
   "<ロール名>",
   "<パスワード>",
   {
     host: "<ホスト名>",
     dialect: "postgres",
+     dialectOptions: {
+       ssl: {
+         require: true,
+         rejectUnauthorized: false,
+       },
+     },
   }
 );

原因

追加したオプション名にもある通り、SSL接続を有効にしてなかったことが原因。

dialectOptions: {
  ssl: true;
}

ちなみに上記のようにSSL接続を有効にするだけで解決しない場合もあるらしく、rejectUnauthorized: falseも必要になってくるとのこと。

詳しくは分かりかねるが、rejectUnauthorizedはSSL証明書云々の設定だとか。