以下本家サイトへアクセス
https://www.postgresql.org/download/
OS(Linux)→ディストリビューション(RED HAT/Cent OS)を選択
https://www.postgresql.org/download/linux/redhat/
PostgreSQLのバージョン、プラットフォーム、アーキテク者を選択
以下内容が自動で表示されるので、そのままコピペ実行でインストールできる。
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Install PostgreSQL:
sudo yum install -y postgresql14-server
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14
[root@vm105 ~]# su - postgres
最終ログイン: 2023/02/25 (土) 09:54:25 JST日時 pts/1
-bash-4.2$ psql -l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 |
template0 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 行)
-bash-4.2$
Linux firewallの解放
-- firewallの状態確認
[root@vm105 ~]# firewall-cmd --state
running
-- 現在の設定確認
[root@vm105 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@vm105 ~]#
-- 外部から繋がるようにポート開放
[root@vm105 ~]# firewall-cmd --add-port=5432/tcp --zone=public --permanent
success
-- 恒久設定の再読み込み
[root@vm105 ~]# firewall-cmd --reload
success
-- 再読み込みしたところで確認
[root@vm105 ~]# firewall-cmd --list-all --zone=public
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
ports: 5432/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@vm105 ~]#
postgresql.confの修正
listen_addresses と port を有効にする
# - Connection Settings -
#
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)
postgresユーザのパスワード変更
デフォルトではpg_hba.confの設定が以下のようになっています。これは、postgres(OSユーザ)からローカル接続であれば、パスワードなしでpsql接続が行えます。(OSユーザと同じ名前のユーザがPostgreSQLで作成されていればパスワード無しでログインできます)個人的にはpeerは使用しないほうが良いと感じているので私はmd5(もしくはscram-sha-256)に書き換えるようにしています。
初期状態
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# rootからpostgresユーザへスイッチしてパスワード変更
#
# su - postgres
最終ログイン: 2023/02/25 (土) 14:43:35 JST日時 pts/1
-bash-4.2$ psql
psql (14.7)
"help"でヘルプを表示します。
postgres=# alter user postgres with password 'postgres';
ALTER ROLE
postgres=#
pg_hba.confの修正
# 外部から接続できるようにする
# 以下は全てのデータベースに対し全てのユーザが指定アドレスから
# パスワード認証で接続できるようにしている
#
# TYPE DATABASE USER ADDRESS METHOD
host all all 192.168.56.0/24 md5
サービスの再起動
# systemctl restart postgresql-14