【Linux】 PostgreSQLのインストールとサーバ構築手順

目次

PostgreSQLの読み方

PostgreSQLは,「ポストグレスキューエル」と読みます.「ポストグレ エスキューエル」とよく間違えられます.

https://wiki.postgresql.org/wiki/FAQ#What_is_PostgreSQL.3F_How_is_it_pronounced.3F_What_is_Postgres.3F

インストール手順

Debian系

UbuntuやDebian, MX LinuxなどのDebian系のディストリビューションでは下記コマンドを利用します.


apt install postgresql

バージョンが確認できれば,インストール成功です.


psql --version
psql (PostgreSQL) 13.9 (Debian 13.9-0+deb11u1)

RHEL系

CentOSやRedHat (RHEL),Rocky LinuxなどのRHEL系のディストリビューションでは下記コマンドでインストールします.


yum install postgresql.x86_64 postgres-server.x86_64
postgresql-setup --initdb

インストールしたら,念のためサービスを再起動します.


systemctl restart postgresqal.service

ローカル環境で動作確認

サーバとして構築する前に,ローカル環境でデータベースにアクセスして,正常動作するかの確認を行います.

PostgreSQLをインストールすると,postgresというユーザが作成されています.初期設定では,postgres以外はPostgreSQLにアクセスできないため,アカウントをpostgresに切り替えます.


su - postgres

データベース一覧を取得

インストール直後のデータベース一覧を取得します.


psql -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
(3 rows)

インストール直後はpostgrestemplate0template1というデータベースが存在します.

これで,基本動作の確認は完了です.

データベースのサーバの構築

続いて,データベースサーバとして環境設定を行います.

サーバ側設定

まずはDBのアクセス権限があるユーザ(postgres)でログインします.


su - postgres

次に,クライアントからアクセスするためにパスワードを設定します.your_passwordは適宜設定してください.


psql -c "ALTER USER postgres WITH PASSWORD 'your_password';"

新しくユーザを作成したい場合,次のコマンドを使用します.


psql -c "CREATE USER username WITH PASSWORD 'your_password';"
psql -c "CREATE DATABASE username;"

次に,クライアントからアクセス可能にするために,設定ファイルを変更します.

変更する設定ファイルはpostgresql.confpg_hba.confです.設定ファイルは/etc/postgresql/13/mainに置かれています(MX Linux).

それぞれファイルのの役割は以下の通りです.

  • postgresql.conf: PostgreSQL全体の設定ファイル
  • pg_hba.conf: 認証に関する設定ファイル

/etc/postgresql/13/main/postgresql.conf


...
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'		# what IP address(es) to listen on;
listen_addresses = '*'
					# comma-separated list of addresses;
					# defaults to 'localhost'; use '*' for all
					# (change requires restart)
port = 5432				# (change requires restart)
max_connections = 100			# (change requires restart)
#superuser_reserved_connections = 3	# (change requires restart)
unix_socket_directories = '/var/run/postgresql'	# comma-separated list of directories
					# (change requires restart)
#unix_socket_group = ''			# (change requires restart)
#unix_socket_permissions = 0777		# begin with 0 to use octal notation
					# (change requires restart)
#bonjour = off				# advertise server via Bonjour
					# (change requires restart)
#bonjour_name = ''			# defaults to the computer name
					# (change requires restart)
...

9行目にlisten_addresses = '*'を追加します.この行の意味はすべてのクライアントIPの接続を許可するということです.

ワイルドカード(’*’)の代わりに,指定のIPアドレスとすることで,接続元IPアドレスを制限することが出来ます.

/etc/postgresql/13/main/pg_hba.conf


...
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
#host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

...

10行目をコメントアウト(もしくは削除)し,11行目を追加します.

ADDRESSを0.0.0.0/0とすることで,すべての接続元からのアクセスを許可します.上記ファイルと同様に,環境に応じて適宜IP制限を指定してください.

接続可能データベースやユーザをallとしていますが,ここも適宜変更可能です.詳細はこちら

設定ファイルを記述後にサービスを再起動します.


systemctl restart postgresql.service

これでサーバ側の設定は完了です.

クライアント設定

クライアントをインストール

PostgreSQLのクライアント環境を下記コマンドでインストールします.


apt install postgresql-client

psqlコマンドで,サーバにアクセスできるかを確認します.

下記のように表示されれば,問題ありません.


psql -U postgres -h <IP address> -l 
Password for user postgres:
                                  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
(3 rows)

データの保存場所

データ保存場所はシステム上です.より高速もしくは大容量なデータベースを作成するには保存場所を変更する必要があります.

データの保存場所を変更する方法については下記記事にまとめました.興味がある方はご覧ください.

まとめ

LinuxにPostgreSQLをインストールし,データベースサーバを構築する手順を記載しました.

よかったらシェアしてね!

コメント

コメントする

目次