Oteto Blogのロゴ

【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証明書云々の設定だとか。