Postgresqlは、30年以上にわたって活発に開発されてきたオープンソースのオブジェクトリレーショナルデータベースシステムであり、信頼性、機能の堅牢性、およびパフォーマンスで高い評価を得ています。 Postgresは、拡張性とSQLコンプライアンスを強調する無料のオープンソースリレーショナルデータベース管理システムです。もともとはPOSTGRESと名付けられ、カリフォルニア大学バークレー校で開発されたIngresデータベースの後継としてその起源を示しています。 PostgreSQLは、多くのWeb、モバイル、地理空間、および分析アプリケーションのプライマリデータストアまたはデータウェアハウスとして使用されます。 PostgreSQLは、構造化データと非構造化データを1つの製品に保存できます。
これらも確認してください:
- FreeBSD13にPostgres14をインストールして設定する方法
- Postgresの権限–データベースユーザーの作成、更新、削除
- Centos8にPostgres13をインストールして構成する方法
- DockerとDocker-Composeを使用したPostgresql14の実行
- Postgres 13Ubuntu20.04をインストールして構成する方法
- Debian11にPostgres14をインストールして設定する方法
- Postgres 14Ubuntu20.04をインストールして構成する方法
- Fedora34にPostgres14をインストールして設定する方法
- OpenSUSELeap15.3にPostgres14をインストールして設定する方法
前提条件
フォローするには、次のものがあることを確認してください。
- Rocky Linux / Alma Linux /Centos8または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!
2。 Postgresサーバーのインストールと起動
デフォルトでは、postgresモジュールでは古いバージョンのpostgresが有効になっています。ただし、現在のモジュールにはpostgresql 14が含まれていません。次のコマンドで確認してください:
$ sudo dnf module list postgresql
Last metadata expiration check: 2:52:36 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
CentOS 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
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
モジュールからインストールすると、古いバージョンのpostgres(10)がインストールされますが、それは私たちが望んでいることではありません。
postgresチームから提供されたリポジトリを使用してpostgres14のリポジトリを設定し、パッケージをインストールします。
次のコマンドを使用してリポジトリRPMをインストールしましょう:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
次に、競合を回避するために、組み込みのPostgreSQLモジュールを無効にします。
sudo dnf -qy module disable postgresql
最後にPostgreSQL14サーバーをインストールします:
sudo dnf install -y postgresql14-server
PostgreSQLデータベースシステムにいくつかの追加機能を提供するContribパッケージもインストールしましょう。
sudo dnf install -y postgresql14-contrib
インストールが完了したら、次のコマンドを使用してPostgreSQLデータベースを初期化します。
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Initializing database ... OK
次のコマンドでpostgresサービスを開始します:
sudo systemctl start postgresql-14
次に、サーバーが再起動したときにサービスが開始されるようにサービスを有効にします。
$ sudo systemctl enable postgresql-14
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-14.service → /usr/lib/systemd/system/postgresql-14.service.
Postgresが実行されていることを確認します:
$ sudo systemctl status postgresql-14
● postgresql-14.service - PostgreSQL 14 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2021-10-06 04:26:52 UTC; 33s ago
Docs: https://www.postgresql.org/docs/14/static/
Process: 1018631 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 1018637 (postmaster)
Tasks: 8 (limit: 23800)
Memory: 17.2M
CGroup: /system.slice/postgresql-14.service
├─1018637 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
├─1018638 postgres: logger
├─1018640 postgres: checkpointer
├─1018641 postgres: background writer
├─1018642 postgres: walwriter
├─1018643 postgres: autovacuum launcher
├─1018644 postgres: stats collector
└─1018645 postgres: logical replication launcher
Oct 06 04:26:52 test-db-server systemd[1]: Starting PostgreSQL 14 database server...
Oct 06 04:26:52 test-db-server postmaster[1018637]: 2021-10-06 04:26:52.204 UTC [1018637] LOG: redirecting log output to logging collector process
Oct 06 04:26:52 test-db-server postmaster[1018637]: 2021-10-06 04:26:52.204 UTC [1018637] HINT: Future log output will appear in directory "log".
Oct 06 04:26:52 test-db-server systemd[1]: Started PostgreSQL 14 database server.
Active: active (running)
サービスが稼働中であることを示しています。
次に、PostgreSQLデータベースサーバーに接続してそのバージョンを印刷することにより、インストールが成功したことを確認しましょう。
sudo -u postgres psql -c "SELECT version();"
出力:
$ sudo -u postgres psql -c "SELECT version();"
version
--------------------------------------------------------------------------------------------------------
PostgreSQL 14.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1), 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データベースに接続しています
-
postres
に切り替える ユーザー
ターミナルに次のように入力して、サーバーのpostgresアカウントに切り替えます;:
sudo -i -u postgres
次のように入力すると、Postgresプロンプトにすぐにアクセスできるようになりました:
$ psql
psql (14.0)
Type "help" for help.
postgres=#
これによりPostgreSQLプロンプトにログインし、ここからデータベース管理システムをすぐに操作できます。
2.コマンドをpostgres
として実行する ユーザー
これを使用して、コマンドをpostgres
として直接実行します sudoを使用しているユーザー
sudo -u postgres psql
出力:
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
5。リモートアクセス用のpostgres14インスタンスの構成
これを実現するために、postgres構成ファイルを変更します。ファイルを開き、構成を調整する必要があります。 Postgresql 14のメイン構成ファイルは、このパス/var/lib/pgsql/14/data/pg_hba.conf
にあります。
ピアIDを信頼できるように変更しましょう:
sed -i '/^local/s/peer/trust/' /var/lib/pgsql/14/data/pg_hba.conf
IDIDをmd5に変更して、パスワードログインを許可します。
sed -i '/^host/s/ident/md5/' /var/lib/pgsql/14/data/pg_hba.conf
ブロックを追加して、どこからでもアクセスできるようにします:
このコンテンツをファイル/var/lib/pgsql/14/data/pg_hba.conf
に追加します
host all all 0.0.0.0/0 md5
PostgreSQLが*
をリッスンしていることを確認します
この行をここの構成に追加します/var/lib/pgsql/14/data/postgresql.conf
listen_addresses='*'
postgresqlサーバーを有効にして再起動し、構成を再読み込みします
sudo systemctl restart postgresql
sudo systemctl enable postgresql
6。ユーザー管理
スーパーユーザーの作成
すべての設定が完了したので、スーパーユーザーを作成しましょう。
postresロールとしてDBに接続します:
$ sudo -u postgres psql
psql (14.0)
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 'passwordhere';
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 | {}
postgres=#
アプリケーションユーザーの管理
これを使用して、データベースを作成し、ユーザーを作成して、そのユーザーにそのデータベースへのすべてのアクセスを許可します。
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'
結論
これまで、Ceentos8サーバーにPostgresql14をインストールし、いくつかの基本的な構成を行ってから、基本的なユーザー管理を行うことができました。