PostgreSQLは、人気のあるオープンソースのリレーショナルデータベース管理システムです。信頼性で知られ、堅牢性、柔軟性、パフォーマンスで人気を集めています。 PostgreSQLは、データベースと多数のWebおよび分析アプリケーションの管理に使用されます。この記事を書いている時点では、PostgreSQL13が最新バージョンです。このバージョンでは、大規模なデータベースに役立つインデックス作成およびルックアップシステムが大幅に改善されています。
この投稿では、RockyLinux8にPostgreSQLをインストールして保護する方法を紹介します。
前提条件
- Atlantic.NetクラウドプラットフォームでRockyLinux8を実行しているサーバー
- サーバーで構成されているrootパスワード
ステップ1-Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてRockyLinux8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
dnf update -y
ステップ2–PostgreSQL13リポジトリを追加する
dnf module list postgresql
PostgreSQLバージョン10のみが利用可能であることがわかります:
Rocky Linux 8 - AppStream Name Stream Profiles Summary postgresql 9.6 client, server [d] PostgreSQL server and client module postgresql 10 [d] client, server [d] PostgreSQL server and client module postgresql 12 client, server [d] PostgreSQL server and client module postgresql 13 client, server [d] PostgreSQL server and client module
最新のPostgreSQLバージョンをインストールするには、PostgreSQLリポジトリをシステムにインストールする必要があります。
次のコマンドを使用してインストールできます:
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
リポジトリが作成されたら、次のステップに進むことができます。
ステップ3–PostgreSQL13をRockyLinux8にインストールする
次に、次のコマンドを使用してリポジトリを更新します。
dnf update -y
次に、次のコマンドを使用してデフォルトのPostgreSQLリポジトリを無効にします。
dnf -qy module disable postgresql
次に、次のコマンドを実行して、最新バージョンのPostgreSQLをインストールします。
dnf install postgresql13 postgresql13-server
PostgreSQL 13をインストールすると、次の出力が得られます。
Last metadata expiration check: 0:00:08 ago on Fri 22 Oct 2021 08:38:58 AM UTC. Dependencies resolved. =============================================================================================================================================== Package Architecture Version Repository Size =============================================================================================================================================== Installing: postgresql13 x86_64 13.4-1PGDG.rhel8 pgdg13 1.5 M postgresql13-server x86_64 13.4-1PGDG.rhel8 pgdg13 5.5 M Installing dependencies: postgresql13-libs x86_64 13.4-1PGDG.rhel8 pgdg13 414 k Transaction Summary =============================================================================================================================================== Install 3 Packages Total download size: 7.4 M Installed size: 31 M Is this ok [y/N]: y
次に、次のコマンドを使用してPostgreSQLデータベースを初期化します。
/usr/pgsql-13/bin/postgresql-13-setup initdb
サンプル出力:
Initializing database ... OK
次に、PostgreSQLサービスを開始し、次のコマンドを使用してシステムの再起動時に開始できるようにします。
systemctl start postgresql-13 systemctl enable postgresql-13
次のコマンドを使用してPostgreSQLのステータスを確認できます。
systemctl status postgresql-13
次の出力が得られるはずです:
● postgresql-13.service - PostgreSQL 13 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-10-22 08:39:47 UTC; 7s ago Docs: https://www.postgresql.org/docs/13/static/ Process: 36412 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 36417 (postmaster) Tasks: 8 (limit: 11411) Memory: 16.8M CGroup: /system.slice/postgresql-13.service ├─36417 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/ ├─36419 postgres: logger ├─36421 postgres: checkpointer ├─36422 postgres: background writer ├─36423 postgres: walwriter ├─36424 postgres: autovacuum launcher ├─36425 postgres: stats collector └─36426 postgres: logical replication launcher
ss -antpl | grep 5432
次の出力が得られます:
LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* users:(("postmaster",pid=36417,fd=7)) LISTEN 0 128 [::1]:5432 [::]:* users:(("postmaster",pid=36417,fd=6))
ステップ4–Postgresユーザーのパスワードを設定する
パスワードを設定するには、次のコマンドを使用してPostgreSQLにログインします。
su - postgres
次に、次のコマンドを使用して安全なパスワードを設定します。
psql -c "alter user postgres with password 'securepassword'"
次に、次のコマンドを使用してPostgreSQLシェルを終了します。
exit
ステップ5–PostgreSQL認証方法の変更
PostgreSQLのメイン構成ファイルを編集して変更できます:
nano /var/lib/pgsql/13/data/pg_hba.conf
次の行を見つけます:
local all all peer
そして、それを次の行に置き換えます:
local all all scram-sha-256
ファイルを保存して閉じてから、PostgreSQLサービスを再起動して変更を適用します。
systemctl restart postgresql-13
ステップ6–PostgreSQLでデータベースとユーザーを作成する
まず、次のコマンドを使用してPostgreSQLシェルにログインします。
sudo -u postgres psql
次の出力が得られます:
could not change directory to "/root": Permission denied psql (13.4) Type "help" for help. postgres=#
次に、次のコマンドを使用して、user1という名前の新しいPostgreSQLユーザーを作成します。
CREATE USER user1 WITH CREATEDB CREATEROLE PASSWORD 'passoword';
PostgreSQLユーザーを確認するには、次を実行します:
\du
次の出力が得られます:
List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} user1 | Create role, Create DB | {}
user1dbという名前の新しいPostgreSQLデータベースを作成するには、次のコマンドを実行します。
CREATE DATABASE user1db OWNER user1;
PostgreSQLデータベースを確認するには、次のコマンドを実行します。
\l
次の出力が得られます:
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres user1db | user1 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
結論
おめでとう! Rocky Linux 8にPostgreSQLを正常にインストールして保護しました。セキュリティ上の理由から、本番環境には常に最新バージョンのPostgreSQLをインストールすることをお勧めします。 Atlantic.NetのVPSホスティングを試してみてください!