@ledsun blog

無味の味は佳境に入らざればすなわち知れず

PostgreSQLのcreateuserで作ったユーザーのパスワードって何になるんだろうか?

PostgreSQLのユーザー作成 - @ledsun blogPostgreSQLのユーザーを作成しました。 パスワードを指定しませんでした。 このとき作成したユーザーにはどのようなパスワードが設定されるのでしょうか? ユーザー名と同じになるのでしょうか?それとも乱数で初期パスワードが設定されるのでしょうか?

createuserコマンドを使ってユーザーを作成したので、そのマニュアルを確認します。

www.postgresql.jp

-P --pwprompt このオプションが指定されると、createuserは新しいユーザのパスワードのプロンプトを表示します。 もしパスワード認証を使う予定がなければ、これは必要ありません。

-pオプションはつけませんでした。 この場合、パスワード認証を使わないようです。 つまりパスワードは設定されていない、あるいは設定されていても無視されるようです。

では、パスワード認証以外の認証には何があるのでしょうか?

www.postgresql.jp

trust認証が指定されるとPostgreSQLは、サーバに接続できる全ての人に対して (データベーススーパーユーザさえも)その人が指定する任意のデータベースユーザ名としてのアクセス権限が付与されていると想定します。

これみたいです。 HomebrewでインストールしたPostgreSQLはTrust認証が有効になっていそうです。

Changing your (Homebrew) PostgreSQL configuration from trust to md5

というそのものズバリな記事があります。 これを参考に自分の環境の設定を確認してみます。 まず設定ファイルpg_hba.confの場所を確認します。

~►psql postgres                                                            09:27
psql (14.2)
Type "help" for help.

postgres=# show hba_file;
              hba_file
-------------------------------------
 /usr/local/var/postgres/pg_hba.conf
(1 row)

つぎにpg_hba.confの内容を確認します。

# "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がいっぱい出てくるので、Trust認証が有効になっているようです。