GNU/Linux >> Linux の 問題 >  >> Cent OS

Centos8にPostgres13をインストールして設定する方法

PostgreSQLは、強力なオープンソースのオブジェクトリレーショナルデータベースシステムであり、30年以上にわたって活発に開発されており、信頼性、機能の堅牢性、およびパフォーマンスで高い評価を得ています。 Postgresは、拡張性とSQLコンプライアンスを強調する無料のオープンソースリレーショナルデータベース管理システムです。もともとはPOSTGRESと名付けられ、カリフォルニア大学バークレー校で開発されたIngresデータベースの後継としてその起源を示しています。 PostgreSQLは、多くのWeb、モバイル、地理空間、および分析アプリケーションのプライマリデータストアまたはデータウェアハウスとして使用されます。 PostgreSQLは、構造化データと非構造化データを1つの製品に格納できます。

これらも確認してください:

  • Postgresの権限–データベースユーザーの作成、更新、削除
  • Centos8にPostgres14をインストールして構成する方法
  • DockerとDocker-Composeを使用したPostgresql14の実行
  • Postgres 13Ubuntu20.04をインストールして構成する方法

前提条件

フォローするには、次のものがあることを確認してください。

  1. Centos 8 / Rocky Linux 8 /RHEL8ベースのサーバー
  2. サーバーまたはrootアクセス権を持つユーザーへのrootアクセス
  3. サーバーからのインターネットアクセス
  4. Linuxターミナルの基本的な知識

目次

  1. サーバーが最新であることを確認します
  2. PostgresServerのインストールと起動
  3. PostgreSQLの役割とデータベースの認証方法
  4. postgresデータベースへの接続
  5. リモートアクセス用のpostgres14インスタンスの構成
  6. ユーザー管理

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は複数の認証方法をサポートしています。最も一般的に使用される方法は次のとおりです。

  • Trustpg_hba.confで定義されている条件である限り、ロールはパスワードなしで接続できます。 満たされています。
  • Password –役割は、パスワードを提供することで接続できます。パスワードはscram-sha-256として保存できます 、md5 、およびpasswordclear-text
  • Ident – TCP/IP接続でのみサポートされます。これは、オプションのユーザー名マッピングを使用して、クライアントのオペレーティングシステムのユーザー名を取得することで機能します。
  • Peer – Identと同じですが、ローカル接続でのみサポートされます。

4。 postgresデータベースに接続しています

postgresユーザーとしてpostgresサーバーに接続する方法はいくつかあります。

  1. 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をインストールし、いくつかの基本的な構成を行ってから、基本的なユーザー管理を行うことができました。


Cent OS
  1. CentOS8にGitlabをインストールして構成する方法

  2. Postgres 13Ubuntu20.04をインストールして設定する方法

  3. Centos8にPostgres13をインストールして設定する方法

  1. CentOS7にVNCをインストールして設定する方法

  2. Postgres 14Ubuntu20.04をインストールして設定する方法

  3. Fedora34にPostgres14をインストールして設定する方法

  1. CentOS8にNFSサーバーをインストールして構成する方法

  2. CentOS8にPostgreSQLをインストールする方法

  3. CentOS8にVNCをインストールして設定する方法