LoginSignup
1
0

More than 1 year has passed since last update.

行き当たりばったり学習~PostgreSQL PGAdmin接続編(RHEL8)~

Last updated at Posted at 2022-10-20

皆さんこんにちは!

医療業界から IT にチャレンジして2年目のharuです。

前回までは PostgreSQL をインストールして起動するところまで進めました。
本日はサーバー側の PosgreSQL に対してクライアントから接続し、
ネットワーク経由でデータベースを操作するための準備を行っていきます。

事前準備

PGAdminを使用してクライアント接続を行う前に、必要な知識をものすごくざっくり学習していきます。

クライアント接続
データベースサーバーに対してネット経由で接続を行う。

クライアントソフト
クライアント接続を行う際に使用する接続元のソフト。

PostgreSQL でクライアント接続を行う際の必須設定

  • pg_hba.conf 及び postgres.conf の設定
  • OSファイアウォールポート設定
  • 設定の反映

1.pg_hba.conf 及び postgres.conf の設定

pg_hba.conf

[postgres@postgreSQL ~]$ find / -name pg_hba.conf 2> /dev/null
/var/lib/pgsql/15/data/pg_hba.conf
[postgres@postgreSQL ~]$ vi /var/lib/pgsql/15/data/pg_hba.conf /* 抜粋 */
# TYPE  DATABASE        USER            ADDRESS                 METHOD
・・・
host    all             all             0.0.0.0/0               trust /* 今回はテストで無制限に許可しております */

postgresql.conf

[postgres@postgreSQL ~]$ find / -name postgresql.conf 2> /dev/null
/var/lib/pgsql/15/data/postgresql.conf

listen_addresses = '*'                  #what IP address(es) to listen on; /* こちらも今回は無制限で許可をしております */
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)

試しにここで PGAdmin から接続してみる。

すると以下のエラーメッセージが発生。

「connection to server at "***.**.**.***",port 5432 failed:timedout expired」

繋がらない。

2.OSファイアウォールポート設定

PostgreSQLを許可する

[root@postgreSQL pgsql]# firewall-cmd --add-service=postgresql --permanent
success

設定をリロード

[root@postgreSQL pgsql]# firewall-cmd --reload
success

試しにここで PGAdmin から接続してみると。。。

サーバーに接続できません:connection to server at "***.**.**.***",
port 5432 failed: Connection refused(*********/*****)Is the server running
on that host and accepting TCP/IP connections?

またまたエラーメッセージが発生しました。
原因としては、ここまでの設定変更が反映されていないからです。

3.設定の反映

systemctlを実行

[root@postgreSQL pgsql]# systemctl start postgresql-15.service
Job for postgresql-15.service failed because the control process exited with error code.
See "systemctl status postgresql-15.service" and "journalctl -xe" for details.

/* コマンドが失敗? */

[root@postgreSQL pgsql]# journalctl -xe
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
--
-- The unit postgresql-15.service has entered the 'failed' state with result 'exit-code'.
10月 19 03:58:15 postgreSQL systemd[1]: Failed to start PostgreSQL 15 database server.
-- Subject: Unit postgresql-15.service has failed
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
--
-- Unit postgresql-15.service has failed.
--
-- The result is failed. /* 起動に失敗していますね */

[root@postgreSQL pgsql]# systemctl status /* PostgreSQL サービスの状態を確認 */
● postgreSQL
    State: degraded
     Jobs: 0 queued
   Failed: 1 units

degraded を対処

サービスを起動できないですね。。。

State : degraded については、以下のブログが参考になります。簡単に言うと起動に失敗している状況らしいです。

▼systemctl statusでdegradedと言われた場合の対処方法
https://linux-junkie.at.webry.info/201712/article_1.html

対処方法としては、systemctl disable でサービスを無効化した後、再起動をすることで runnning になるらしい。

[root@postgreSQL pgsql]# systemctl disable postgresql-15.service
Removed /etc/systemd/system/multi-user.target.wants/postgresql-15.service.
[root@postgreSQL pgsql]# systemctl reboot
Too few arguments.

/*OS再起動後*/

[root@postgreSQL ~]# systemctl status postgresql-15.service
● postgresql-15.service - PostgreSQL 15 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-15.service; enabled; vendor preset: disabled)
   Active: active (running)  /* PostgreSQL のサービスが起動してますね */
   ・・・

ようやく起動したので次に進みます。

4.PGAdminでPostgreSQLに接続

現在のPostgreSQLサーバーの起動状態を確認します。

[root@postgreSQL ~]# su - postgres
[postgres@postgreSQL ~]$ pg_ctl status
pg_ctl: サーバーが動作中です(PID: 3493)
/usr/pgsql-15/bin/postgres "-D" "/var/lib/pgsql/15/data/"

PostgreSQL サーバーが起動していることを確認したので、PGAdmin から接続します。
接続成功.PNG
※セキュリティ面の配慮のため、ホスト名/アドレスは消しています。
接続成功2.PNG

5.まとめ

PGAdminを使用してPostgreSQLサーバーに接続する際の必須設定としては、以下の3つが必要です。

  • pg_hba.conf 及び postgres.conf の設定
  • OSファイアウォールポート設定
  • 上記2項目の設定を反映する(サービスの再起動)

また、今回の検証では許可を無制限にしていますが、実際の運用では特定のIPアドレスのみ許可をします。
無制限にするとセキュリティがゆるゆるなので、、、

ではまた!

1
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
1
0