...

【PostgreSQL】SSL ofやno pg_hba.conf entry for hostとエラーが出た時の対処法

PostgreSQLのSSL of

どうもおはようポテト(@ohayoupoteto22)です。

先日、Heroku上のPostgreSQLをSequelizeを用いて色々いじいじしていた時にエラーに遭遇し、丸一日ほど格闘した末になんとか退治できたので

自分の備忘録も兼ねて、その解決に至るまでにとった方法をまとめたいと思います。

ブログ主

早速いってみよう!

no pg_hba.conf entry for hostの原因

SequelizeConnectionErrorとの遭遇

今回はddabというフレームワークを使い、簡単なチャットボットを作ろうとしていました。

Heroku createし、postgresのアドオンを作り終え、「$ heroku config」でホスト名云々の情報を取得して終わり!あとは同人誌でも読もう!

なんて悠長に構えていましたが、いざ実行してみると…

 

丘people!?

 

「SequelizeConnectionError」…??

「no pg_hba.conf entry for host」…??

なになに…要はデータベースに接続できてないと…?なら

ブログ主

ホスト名やらロール名が間違ってるのかね
と思い何度も確認しましたが…

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

データベース名やロール名とか別に間違えてないんだけどなぁ…

なので「no pg_hba.conf entry for host」的な感じでGoogle先生で検索してみると…

「/var/lib/pgsql/data/pg_hba.confをいじいじすればOKだぜベイベー」とあったので、その通りにいじいじしてあげましたが…

 

どうもエラー君は僕のことが好きなようで。

 

八方塞がりだ…

くるみ

原因はSSL絡みだった

しかし肝心な事はエラーメッセージの最後にちゃんと載ってました。

「SSL off」…??
SSLってアレでしょ暗号化的な…「https」にする的な。

という事で調べたところ…

SSL接続を有効にしてあげればよいとのことでした。

SSL ofやno pg_hba.conf entry for hostの対処法

結論

とっとと結論から。

const sequelize = new Sequelize(
  'データベース名',
  'ロール名',
  'パスワード',
  {
    host: 'ホスト名',
    dialect: 'postgres',
    dialectOptions: {//以下を追加
      ssl: {
        require: true,
        rejectUnauthorized: false
      }
    }
  });

以上のように変更してあげるとエラー君は成仏してくれました。やったぜ。

ブログ主

解決するまでに1日ぐらいかかりました。南無三。
詳しくは分かりかねますが、「rejectUnauthorized」はSSL証明書云々の設定だそうです。うーん難しい(›´ω`‹ )

参考 sequelize connectionerror self signed certificatestack overflow

余談

dialectOptions: {
  ssl: true
}

上記のようにSSLをtrueにするだけで解決した、みたいなのも調べたところありましたが

 

 

ブログ主の場合はこの方法だとエラーのままでした。アーメン。

 

まとめ

以上、PostgreSQLでSSL ofやno pg_hba.conf entry for hostとエラーが出た時の対処法でした。

「$ heroku pg:credentials:url」を叩いてデータベースを確認したり、herokuのアプリを作り直したり…

色々遠回りしてきましたが無事に解決できてよかったと胸を撫で下ろしています

とりま解決できたからOK!

くるみ

参考になれば幸いです!では⸝⸝- ̫ -⸝⸝

参考になったらシェアしよう

コメントを残す

メールアドレスが公開されることはありません。