[ PostgreSQL](https://cloud.tencent.com/product/postgresql?from=10680)またはPostgresは、オープンソースの多目的[リレーショナルデータベース](https://cloud.tencent.com/product/cdb-overview?from=10680)管理システムです。障害に強い環境や複雑なアプリケーションを構築できる多くの高度な機能を備えています。
このガイドでは、CentOS8にPostgreSQLデータベースサーバーをインストールする方法について説明します。インストールするバージョンを選択する前に、アプリがそれをサポートしていることを確認してください。
PostgreSQLデータベース管理の基本について説明します。
パッケージをインストールするには、rootまたはsudo権限を持つ別のユーザーとしてシステムにログインする必要があります。
この記事の執筆時点では、インストール可能なPostgreSQLサーバーのバージョンは9.6と10.0の2つです。
使用可能なPostgreSQLモジュールを一覧表示するには、次のように入力します。
dnf module list postgresql
出力は、postgresqlには2つのバージョンがあることを示しています。各バージョンには、サーバーとクライアントの2つの部分があります。サーバーバージョン10がデフォルトバージョンです。
CentOS-8- AppStream
Name Stream Profiles Summary
postgresql 10[d] client, server [d] PostgreSQL server and client module
postgresql 9.6 client, server [d] PostgreSQL server and client module
sudo dnf install @postgresql:10
sudo dnf install @postgresql:9.6
PostgreSQLデータベースにいくつかの追加機能を提供するcontribパッケージをインストールすることもできます。
sudo dnf install postgresql-contrib
インストールが完了したら、次のコマンドを使用してPostgreSQLデータベースを初期化します。
sudo postgresql-setup initdb
Initializing database ... OK
PostgreSQLサービスを開始し、起動時にPostgreSQLサービスを有効にします。
sudo systemctl enable --now postgresql
psql
ツールを使用してPostgreSQLデータベースサーバーに接続し、そのバージョン番号を出力してインストールプロセスを確認します。
sudo -u postgres psql -c "SELECT version();"
PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc(GCC)8.2.120180905(Red Hat 8.2.1-3),64-bit
PostgreSQLは複数の認証方法をサポートしています。最も一般的に使用される方法は次のとおりです。
pg_hba.conf
で定義された条件が満たされている限り、ロールはパスワードを使用せずにサーバーに接続できますPostgreSQLクライアント認証は通常、 pg_hba.conf
ファイルで定義されます。デフォルトでは、ローカル接続の場合、PostgreSQLはピアに対して認証するように設定されています。
postgres
ユーザーとしてPostgreSQLサーバーにログインするには、最初にユーザーを切り替えてから、 psql
ツールを使用してPostgreSQLにアクセスします。
sudo su - postgres
psql
ここから、PostgreSQLインスタンスを操作できます。 PostgreSQLシェルを終了し、次のように入力します。
\ q
sudo
コマンドを使用して、ユーザーを切り替えることなくPostgreSQLにアクセスすることもできます。
sudo -u postgres psql
通常、 postgres
ユーザーはローカルでのみ使用されます。
新しいロールを作成できるのは、スーパーユーザーと CREATEROLE
権限を持つロールのみです。
次の例では、 john
という名前のロール、 johndb
という名前のデータベースを作成し、データベースへのアクセス許可を付与します。
sudo -u postgres psql
create role john;
create database johndb;
grant all privileges on database johndb to john;
デフォルトでは、PostgreSQLサーバーはローカルネットワークインターフェイス 127.0.0.1
でのみリッスンします。
PostgreSQLサーバーへのリモートアクセスを許可するには、構成ファイルを開きます。
sudo nano /var/lib/pgsql/data/postgresql.conf
[接続と認証]セクションまで下にスワイプし、次の行を追加または編集します。
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses ='*' # what IP address(es) to listen on;
ファイルを保存し、次のコマンドを使用してPostgreSQLサービスを再起動します。
sudo systemctl restart postgresql
ss
ツールを使用して、この変更を確認します。
ss -nlt | grep 5432
LISTEN 01280.0.0.0:54320.0.0.0:*
LISTEN 0128[::]:5432[::]:*
上記の出力は、PostgreSQLサーバーがすでにすべてのネットワークインターフェイスのデフォルトポート( 0.0.0.0
)でリッスンしていることを示しています。
最後のステップは、 pg_hba.conf
ファイルを編集して、リモート接続を受け入れるようにサーバーを構成することです。
さまざまなユーザー例を示すいくつかの例を次に示します。
# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using an md5 password
host all jane 0.0.0.0/0 md5
# The user jane can access only the janedb database from all locations using an md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane can access all databases from a trusted location(192.168.1.134) without a password
host all jane 192.168.1.134 trust
CentOS 8は、9.6と10.0の2つのPostgreSQLバージョンを提供します。
このトピックの詳細については、[PostgreSQL公式ドキュメント](https://www.postgresql.org/docs/10.0/static/index.html)にアクセスしてください。
Recommended Posts