FedoraにPostgreSQL 11をインストールする方法

今日はFedoraにPostgreSQLのデータベースをインストールする方法を紹介します。FedoraはLinuxのディストロの中でも安定性とソフトウェアが最新にそろっていることで知られています。Debian(Ubuntu)を使わない場合で、さらにキレイなデスクトップを使いたい方は是非Fedoraがお勧めです。またPostgreSQLはオープンソースで実際のプロダクションでも使用できるリレーショナルデータベースです。ぜひ活用してください。

Fedoraのバージョンの確認

では早速、Fedoraのバージョンを確認しましょう。

cat /etc/fedora-release

#アウトプット
Fedora release 35 (Thirty Five)

システムのアップデート

Postgresをインストールする前にシステムが最新のものになっているかを確認しましょう。

最後に再起動を忘れずに。

sudo dnf install -y bash-completion vim
sudo dnf update -y

#完了したら再起動
sudo reboot

PostgreSQL Yum Repositoryを追加

PostgresのリポジトリをFedoraのシステムに追加します。

Fedora 35:
sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-35-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Fedora 34:
sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-34-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Fedora 33:
sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-33-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Fedora 32:
sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-32-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Fedora 31:
sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-31-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Fedora 30:
https://download.postgresql.org/pub/repos/yum/reporpms/F-30-x86_64/pgdg-fedora-repo-latest.noarch.rpm

このコマンドを実行するとインストールをするか再度きかれるのでyを入力してエンターを押します。

PostgreSQL Server and Client packagesを追加

次にPostgreSQLのサーバーとクライアントパッケージを追加します。

sudo dnf install postgresql11-server postgresql11

これも本当にインストールしてよいか聞かれるのですべてにyで答えて進めます。

データベースのイニシャライズと自動スタート

では、データベースをイニシャライズし、OSの起動と同時にデータベースのサーバーも起動するように設定します。

sudo /usr/pgsql-11/bin/postgresql-11-setup initdb

#アウトプット
Initializing database ... OK

sudo systemctl start postgresql-11
sudo systemctl enable postgresql-11

ここまでできたら、postgreSQLが間違いなく起動しているか確かめてみましょう。

systemctl status postgresql-11

問題ないですね。

postgres

PostgreSQLのコンフィグファイル

PostgreSQLのコンフィグファイルは下記のファイルパスにあります。

/var/lib/pgsql/11/data/postgresql.conf

ファイヤーウォールの設定

もしローカルホストではなくネットワークからPostgreSQLにアクセスをさせる場合はファイアウォールで許可させます。

sudo firewall-cmd --add-service=postgresql --permanent
sudo firewall-cmd --reload

PostgreSQLへのリモートアクセスを許可

/var/lib/pgsql/11/data/postgresql.confのコンフィグファイルを編集してすべてのIPからのアクセスを許可できます。

sudo nano /var/lib/pgsql/11/data/postgresql.conf

listen_addresses = '*'

PostgreSQLにリモートアクセスを許可させます。

sudo nano /var/lib/pgsql/11/data/pg_hba.conf
# Accept from anywhere
host all all 0.0.0.0/0 md5

# Accept from trusted subnet
host all all 192.168.18.0/24 md5

PostgreSQLのサービスをリスタートさせてコンフィグファイルを再読み込みさせます。

sudo systemctl restart postgresql-11

PostgreSQLアドミンユーザーのパスワード

PostgreSQLにアドミン権限を与えます。

sudo su - postgres 

#ここにパスワードの部分に好きなパスワードを設定
psql -c "alter user postgres with password 'ここにパスワード'"

#結果
ALTER ROLE

ではユーザーとデータベースを作成します。

createuser test_user
createdb test_db -O test_user
grant all privileges on database test_db to test_user;

#ログインする
psql -U test_user -h localhost -d test_db

もしcreatedb: could not connect to database template1: FATAL: Peer authentication failed for user “ユーザー名”のエラーが出た場合はpg_hba.confのコンフィグファイルでパスワードでデータベースを作成できるようにします。

sudo nano /var/lib/pgsql/11/data/pg_hba.conf

#オリジナルがこれ
# TYPE DATABASE USER ADDRESS METHOD
local  all      all          peer

#これに変更
local  all      all          md5

#PostgreSQLをリスタートします。
sudo systemctl restart postgresql-11

では作成したデータベースを見てみましょう。

psql -U ユーザー名(postgres) -l
#-lがリストで表示するというフラグです。

ここでデータベースの所有者やDB名が確認できます。

では今日はここまでです。

お疲れ様でした。