PostgreSQL触ってみた③

D
2023-05-26
2023-05-26

 

おつかれさまです。Dです。

PostgresSQLを全く触ったことが無かったんですが、業務上必要になり色々と調べたので
せっかくなのでブログで徐々に書き連ねていこうの続きです。

ちなみに①②がありますので、まだ読んでいない方はそちらから読んでいただけると嬉しいです。

内容

前回は実際にPostgresSQLをインストールして終了したので、設定変更と実際に接続するところまでやっていきたいと思います。

環境は前回同様AlmaLinux8.7になります。



-----------------------------------------
# cat /etc/redhat-release
AlmaLinux release 8.7 (Stone Smilodon)
-----------------------------------------

まずは管理者ユーザーのパスワードを変更しておきます。
※今回は検証なので簡単なパスワードですが、実際の運用機では強力なパスワードを設定してください。


-----------------------------------------
# su - postgres
$ psql -c "alter user postgres with password 'postgres'"
ALTER ROLE
-----------------------------------------

パスワードを設定したので、以下のコマンドでDBにログインしていきます。


-----------------------------------------
$ su - root
# psql -U postgres
-----------------------------------------

おっと。。。接続に失敗しましたね。


------------------------------------------------------------
psql: error: FATAL:  Peer authentication failed for user "postgres"
------------------------------------------------------------

上記のエラーは、PostgresSQLの認証ファイル(hbaファイル)でデフォルトがPeer認証がOnになっていて
ローカルでアクセスする時のLinuxユーザーとパスワードがpostgresユーザーと同じものでないとエラーになります。

今回はrootユーザーでログインしようとしたため、上記に引っかかってしまったというわけです。

ちなみに以下のようにpostgresユーザーにチェンジユーザーした後であれば、接続は可能です。


------------------------------------------------------------
# su postgres
$ psql
psql (13.10)
Type "help" for help.

postgres=#
------------------------------------------------------------

せっかくなので、認証ファイルを修正してrootユーザーやその他のユーザでも
接続できるように設定していきます。

以下のファイルがPostgreSQLの認証ファイルです。
METHODのフィールドがpeerになっているのでmd5に変更します。



# vi /var/lib/pgsql/data/pg_hba.conf
------------------------------------------------------------
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer

# "local" is for Unix domain socket connections only
local   all             all                                     md5
------------------------------------------------------------

MD5に変更すると、PostgreSQLに作成されたユーザーと設定されている
パスワードで認証しログインが可能になります。

各フィールドの意味については以下になります。

それぞれの詳しい値については、今回は割愛しますが少し調べると出てくるので興味のある方は調べてみてください。

  • TYPE   :接続方式
  • DATABASE:対象となるデータベース
  • USER  :対象となるデータベースユーザ
  • ADDRESS  :接続元IPアドレス
  • METHOD   :認証方式

ファイルを更新した後は、再起動で反映させます。


--------------------------------------------------------------------------
# systemctl status postgresql.service

# systemctl restart postgresql.service
--------------------------------------------------------------------------

再起動後はrootユーザーでもpostgresユーザーを指定すればログインが可能になります。


----------------------------------------------------------------
# psql -U postgres
Password for user postgres:
psql (13.10)
Type "help" for help.

postgres=#
----------------------------------------------------------------

【まとめ】

今回はLinuxサーバーにPostgreSQLをインストールして起動まで出来ました。
次回は、実際に設定ファイルを編集して接続が出来るように試していきたいと思います。