0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PostgreSQLでパスワード認証を設定する

Last updated at Posted at 2020-05-01

PostgreSQLを使ったときに、パスワード認証の設定がなかなできずに詰まったので書きました。


筆者の環境

  • psql (PostgreSQL) 12.2
  • macOS Catalina 10.15.3

1、ROLE(ユーザー)のパスワードを設定する

各ユーザーのパスワードを設定する。

新たにユーザーを作成する場合

user01を新規ユーザーとして作成、パスワードはpassとする。
postgres=> CREATE ROLE user01 WITH LOGIN PASSWORD 'pass';

既存のユーザーにパスワードを付与する場合

既存ユーザーuser02に対してパスワードpassを設定する。
postgres=> ALTER ROLE user02 WITH PASSWORD 'pass';

2、pg_hba.conf(設定ファイル)を編集する

設定ファイルの認証方式を編集して、パスワードを聞かれるようにする。

まず、ファイルの位置を検索
※もっと良いコマンドもあると思う
sudo find / -name pg_hba.conf

検索できたらファイルのパスを指定してエディタで設定ファイルを確認する。

私の環境だと下記のようになっていた。
一番右側のMETHODの部分が認証方式。現状だと全てtrustになってあり、無条件でログインできてしまう。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
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

認証方式について

  • trust 全て接続を無条件で許可する。パスワードや他の認証方式も適用されない。
  • password クライアントに対して平文のパスワードを要求する。
  • md5 クライアントに対して二重MD5ハッシュ化パスワードを要求する。

上記3種類以外にもあるが今回は割愛。

MTHODtrustからpasswordormd5にすればパスワードの認証を設定することができる。

下図は設定の一例

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     password
# IPv4 local connections:
host    all             all             127.0.0.1/32            password
# IPv6 local connections:
host    all             all             ::1/128                 password
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     password
host    replication     all             127.0.0.1/32            password
host    replication     all             ::1/128                 password

記事の改善点、間違い等ありましたらぜひご指摘をお願いします。

参考
PostgreSQL 9.4.5文書 19.1. pg_hba.confファイル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?