PostgreSQLは、強力なオープンソースのオブジェクトリレーショナルデータベースシステムであり、30年以上にわたって活発に開発されており、信頼性、機能の堅牢性、およびパフォーマンスで高い評価を得ています。 Postgresは、拡張性とSQLコンプライアンスを強調する無料のオープンソースリレーショナルデータベース管理システムです。もともとはPOSTGRESと名付けられ、カリフォルニア大学バークレー校で開発されたIngresデータベースの後継としてその起源を示しています。 PostgreSQLは、多くのWeb、モバイル、地理空間、および分析アプリケーションのプライマリデータストアまたはデータウェアハウスとして使用されます。 PostgreSQLは、構造化データと非構造化データを1つの製品に格納できます。
これらも確認してください:
- Postgresの権限–データベースユーザーの作成、更新、削除
- Centos8にPostgres14をインストールして構成する方法
- DockerとDocker-Composeを使用したPostgresql14の実行
- Postgres 13Ubuntu20.04をインストールして構成する方法
前提条件
フォローするには、次のものがあることを確認してください。
- Centos 8 / Rocky Linux 8 /RHEL8ベースのサーバー
- サーバーまたはrootアクセス権を持つユーザーへのrootアクセス
- サーバーからのインターネットアクセス
- Linuxターミナルの基本的な知識
目次
- サーバーが最新であることを確認します
- PostgresServerのインストールと起動
- PostgreSQLの役割とデータベースの認証方法
- postgresデータベースへの接続
- リモートアクセス用のpostgres14インスタンスの構成
- ユーザー管理
1。サーバーが最新であることを確認します
先に進む前に、サーバーに最新のパッケージがあることを確認しましょう。次のコマンドを使用します:
$ sudo dnf -y update
Last metadata expiration check: 2:52:07 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
Dependencies resolved.
Nothing to do.
Complete!
PostgresServerのインストールと起動
dnfコマンドを使用して、postgresqlモジュールで使用可能なストリームを一覧表示します。
dnf module list postgresql
出力:
# dnf module list postgresql
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
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[d]
でマークされたモジュール はデフォルトであるため、Streamを指定せずにpostgresをインストールするとインストールされます。この場合、次のコマンドはpostgres10をインストールします
sudo dnf install @postgresql
これはインストールされているバージョンです
$ sudo dnf list installed | grep postgres
postgresql.x86_64 10.17-1.module_el8.4.0+823+f0dbe136 @appstream
postgresql-server.x86_64 10.17-1.module_el8.4.0+823+f0dbe136 @appstream
それは私が望むパッケージではないので、これでアンインストールします
sudo dnf erase -y @postgresql
次に、postgresql13をインストールします。最初にpostgresqlmduleをリセットして、インストールされていないことを確認します。
sudo dnf module reset postgresql
sudo dnf install @postgresql:13
PostgreSQLデータベースシステムにいくつかの追加機能を提供するcontribパッケージもインストールしましょう。
sudo dnf install postgresql-contrib
インストールが完了したら、次のコマンドを使用してPostgreSQLデータベースを初期化します。
sudo postgresql-setup postgresql-setup --initdb --unit postgresql
出力:
* Initializing database in '/var/lib/pgsql/data'
* Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
PostgreSQLサービスを開始し、起動時に開始できるようにします:
sudo systemctl enable --now postgresql
dbのステータスを確認する
# systemctl status postgresql
● postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-08-05 08:15:07 UTC; 7s ago
Process: 68683 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
Main PID: 68686 (postmaster)
Tasks: 8 (limit: 23506)
Memory: 17.3M
CGroup: /system.slice/postgresql.service
├─68686 /usr/bin/postmaster -D /var/lib/pgsql/data
├─68687 postgres: logger
├─68689 postgres: checkpointer
├─68690 postgres: background writer
├─68691 postgres: walwriter
├─68692 postgres: autovacuum launcher
├─68693 postgres: stats collector
└─68694 postgres: logical replication launcher
Aug 05 08:15:07 prod-db systemd[1]: Starting PostgreSQL database server...
Aug 05 08:15:07 prod-db postmaster[68686]: 2021-08-05 08:15:07.650 UTC [68686] LOG: redirecting log output to logging collector process
Aug 05 08:15:07 prod-db postmaster[68686]: 2021-08-05 08:15:07.650 UTC [68686] HINT: Future log output will appear in directory "log".
Aug 05 08:15:07 prod-db systemd[1]: Started PostgreSQL database server.
Active: active (running)
は、postgresサーバーが正常に稼働していることを示しています。
PostgreSQLデータベースサーバーに接続してインストールを確認し、そのバージョンを印刷します:
sudo -u postgres psql -c "SELECT version();"
出力:
version
------------------------------------------------------------------------------------------------------------
PostgreSQL 13.3 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit
(1 row)
3。 PostgreSQLの役割とデータベースの認証方法
PostgreSQLはroles
と呼ばれる概念を使用しています クライアントの認証と承認を処理します。デフォルトでは、Postgresはident authentication
を使用するように設定されています 、これは、Postgresロールを一致するUnix/Linuxシステムアカウントに関連付けることを意味します。 Postgres内にロールが存在する場合、同じ名前のUnix/Linuxユーザー名がそのロールとしてサインインできます。
インストール手順により、デフォルトのpostgresロールに関連付けられたpostgresというユーザーアカウントが作成されました。 PostgreSQLを使用するには、そのアカウントにログインできます。
PostgreSQLは複数の認証方法をサポートしています。最も一般的に使用される方法は次のとおりです。
Trust
–pg_hba.conf
で定義されている条件である限り、ロールはパスワードなしで接続できます。 満たされています。Password
–役割は、パスワードを提供することで接続できます。パスワードはscram-sha-256
として保存できます 、md5
、およびpassword
(clear-text
。Ident
– TCP/IP接続でのみサポートされます。これは、オプションのユーザー名マッピングを使用して、クライアントのオペレーティングシステムのユーザー名を取得することで機能します。Peer
– Identと同じですが、ローカル接続でのみサポートされます。
4。 postgresデータベースに接続しています
postgresユーザーとしてpostgresサーバーに接続する方法はいくつかあります。
-
postres
に切り替える user
次のように入力して、サーバーのpostgresアカウントに切り替えます。sudo -i -u postgres
次のように入力すると、Postgresプロンプトにすぐにアクセスできるようになりました:
[[email protected]-server ~]$ psql psql (13.3) Type "help" for help.
postgres =#
This will log you into the PostgreSQL prompt, and from here you are free to interact with the database management system right away.
2. By running the command as postgres user
Use this to run the command directly as the postgres
user using sudo
```bash
sudo -u postgres psql
5。リモートアクセス用のpostgres14インスタンスの構成
これを実現するために、postgres構成ファイルを変更します。ファイルを開いて構成を調整する必要があります。
Postgresql13構成ファイルはこのパス/var/lib/pgsql/data/pg_hba.conf
にあります。 。
ピアIDを信頼できるように変更します:
sed -i '/^local/s/peer/trust/' /var/lib/pgsql/data/pg_hba.conf
IDIDをmd5に変更します
sed -i '/^host/s/ident/md5/' /var/lib/pgsql/data/pg_hba.conf
ブロックを追加して、どこからでもアクセスできるようにします:
このコンテンツをファイル/var/lib/pgsql/data/pg_hba.conf
に追加します
host all all 0.0.0.0/0 md5
PostgreSQLが*をリッスンしていることを確認します。
この行を構成に追加します/var/lib/pgsql/data/postgresql.conf
listen_addresses='*'
postgresqlサーバーを有効にして再起動し、構成を再読み込みします
sudo systemctl restart postgresql
sudo systemctl enable postgresql
6。ユーザー管理
スーパーユーザーの作成
postgresの管理に使用できるスーパーユーザー権限を持つユーザーを作成しましょう。
postresロールとしてDBに接続します
$ sudo -u postgres psql
psql (13.3)
Type "help" for help.
postgres=#
root
という名前のスーパーユーザーを作成します :
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
ユーザーが作成され、必要な権限が付与されているかどうかを確認します。
postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'MrBpR89Yskv3hofGLP';
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser, Create role, Create DB | {}
アプリケーションユーザーの管理
これを使用して、データベースを作成し、ユーザーを作成して、そのユーザーにそのデータベースへのすべてのアクセスを許可します。
create database app_db_name;
create user app_user with encrypted password 'dbpassword';
grant all privileges on database app_db_name to app_user;
postgresでのユーザーと権限の管理に関するこの包括的なガイドをここでチェックしてください。
リモートホストからインスタンスに接続する
次のコマンドを使用して、ローカルマシンからpostgresインスタンスに接続します。
psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'
# like
psql 'postgres://root:[email protected]:5432/postgres?sslmode=disable'
結論
これまで、UbuntuサーバーにPostgresql13をインストールし、いくつかの基本的な構成を行ってから、基本的なユーザー管理を行うことができました。