rails6 PostgreSQL接続時に「authentication requires libpq version 10 or above」が発生した場合

rails6 PostgreSQL接続時に「authentication requires libpq version 10 or above」が発生した場合

Rails6でエラー「authentication requires libpq version 10 or above」が発生した場合の対処法を記述してます。

環境

  • OS CentOS Linux release 7.9.2009 (Core)
  • Ruby 2.7.2
  • Rails 6.1.1
  • rbenv 1.1.2-40-g62d7798
  • PostgreSQL 13.1

エラー全文

DB作成時に発生

bundle exec rails db:create

エラー全文

SCRAM authentication requires libpq version 10 or above
Couldn't create 'sample_development' database. Please check your configuration.
rails aborted!
ActiveRecord::ConnectionNotEstablished: SCRAM authentication requires libpq version 10 or above
/home/username/railsApp/bin/rails:5:in `<top (required)>'
/home/username/railsApp/bin/spring:10:in `require'
/home/username/railsApp/bin/spring:10:in `block in <top (required)>'
/home/username/railsApp/bin/spring:7:in `tap'
/home/username/railsApp/bin/spring:7:in `<top (required)>'

Caused by:
PG::ConnectionBad: SCRAM authentication requires libpq version 10 or above
/home/username/railsApp/bin/rails:5:in `<top (required)>'
/home/username/railsApp/bin/spring:10:in `require'
/home/username/railsApp/bin/spring:10:in `block in <top (required)>'
/home/username/railsApp/bin/spring:7:in `tap'
/home/username/railsApp/bin/spring:7:in `<top (required)>'
Tasks: TOP => db:create
(See full trace by running task with --trace)

原因

PostgreSQLの認証方式の問題

対処法

PostgreSQL側の「postgresql.conf」をmd5にしてあげる。

password_encryption = md5

「pg_hba.conf」も以下のように編集して、再起動すれば改善されました。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host    replication     all             127.0.0.1/32            trust
host    replication     all             ::1/128                 trust

host all all all md5