本篇介紹如何在 CentOS Linux 中安裝 PostgreSQL 資料庫伺服器。

安裝 PostgreSQL 資料庫

在 CentOS 中若要安裝 PostgreSQL,可以從 CentOS 官方套件庫來安裝(建議選項),若是有特殊需要,一定要安裝較新的版本,則可由 PostgreSQL 所提供的套件庫來安裝。

CentOS 官方套件庫

在 CentOS Linux 的官方套件庫中已經有收錄 PostgreSQL 的套件,所以只要使用 yum 即可直接安裝:

# 安裝 PostgreSQL 伺服器
sudo yum install postgresql-server postgresql-contrib

安裝好之後,第一次使用前要進行 PostgreSQL 資料庫初始化設定:

# 初始化 PostgreSQL 資料庫
sudo postgresql-setup initdb

立即啟動 PostgreSQL 伺服器:

# 啟動 PostgreSQL 伺服器
sudo systemctl start postgresql

設定讓 PostgreSQL 伺服器在開機時可以自動啟動:

# 設定開機自動啟動 PostgreSQL 伺服器
sudo systemctl enable postgresql

這樣就完成安裝 PostgreSQL 資料庫的伺服器了。

PostgreSQL 套件庫

若需要比較新版的 PostgreSQL,則可從 PostgreSQL 官方提供的套件庫來安裝。首先從 PostgreSQL 的網頁中尋找對應的套件庫,下載並安裝。

# 下載 PostgreSQL 套件庫資訊
wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 安裝 PostgreSQL 套件庫資訊與 EPEL
sudo yum install pgdg-redhat-repo-latest.noarch.rpm epel-release

接著即可安裝指定版本的 PostgreSQL 了:

# 安裝 11 版 PostgreSQL
sudo yum install postgresql11-server postgresql11-contrib

# 安裝 10 版 PostgreSQL
sudo yum install postgresql10-server postgresql10-contrib

# 安裝 9.6 版 PostgreSQL
sudo yum install postgresql96-server postgresql96-contrib

# 安裝 9.5 版 PostgreSQL
sudo yum install postgresql95-server postgresql95-contrib

# 安裝 9.4 版 PostgreSQL
sudo yum install postgresql94-server postgresql94-contrib

接著按照自己安裝的版本,初始化 PostgreSQL 資料庫:

# 初始化 PostgreSQL 資料庫
sudo /usr/pgsql-11/bin/postgresql-11-setup initdb

立即啟動 PostgreSQL 伺服器:

# 啟動 PostgreSQL 伺服器
sudo systemctl start postgresql-11

設定讓 PostgreSQL 伺服器在開機時可以自動啟動:

# 設定開機自動啟動 PostgreSQL 伺服器
sudo systemctl enable postgresql-11

連線與防火牆

PostgreSQL 預設只會開放本機 (localhost)的連線進入,若想要讓外部的使用者亦可透過網路連線進來存取資料,就要修改其設定。

編輯 /var/lib/pgsql/11/data/postgresql.conf 設定檔,依據自己的需求修改 listen_addresses 屬性,指定要傾聽(listen)的網路介面:

# listen_addresses = 'localhost'
# listen_addresses = '192.168.56.4'
listen_addresses = '*'

編輯 /var/lib/pgsql/11/data/pg_hba.conf 設定檔,加入允許存取 PostgreSQL 資料庫的網段:

# 允許 192.168.56.0/24 的所有連線
host    all             all             192.168.56.0/24         trust

更改 PostgreSQL 的設定之後,要重新啟動讓設定生效:

# 重新啟動 PostgreSQL 服務
sudo systemctl restart postgresql-11

接著要開啟 CentOS Linux 系統的防火牆:

# 將 postgresql 服務新增至 public 區域中
sudo firewall-cmd --zone=public --add-service=postgresql

# 永久將 postgresql 服務新增至 public 區域中
sudo firewall-cmd --zone=public --permanent --add-service=postgresql

這樣就可以讓外部的使用者存取 PostgreSQL 資料庫了。

管理 PostgreSQL 資料庫

在安裝 PostgreSQL 資料庫時,預設會建立一個專門用於管理資料庫用的 postgres Linux 系統使用者帳號與 PostgreSQL 使用者帳號,在管理 PostgreSQL 資料庫時就要使用這個帳號來進行。

# 切換成 postgres 使用者
sudo -i -u postgres

# 進入 PostgreSQL 指令介面
psql

在進入 PostgreSQL 指令介面之後,就可以進行各項 PostgreSQL 的管理,關於 psql 的操作方式,可參考官方的手冊

若要以一般使用者的權限來使用 PostgreSQL 資料庫,要先建立帳號以及對應的資料庫,然後再以對應的帳號執行 psql,即可進入 PostgreSQL 資料庫:

# 新增 PostgreSQL 使用者
sudo -u postgres createuser gtwang

# 新增 PostgreSQL 資料庫
sudo -u postgres createdb gtwang

# 進入 PostgreSQL 資料庫
psql

關於更詳細的 PostgreSQL 操作,可以參考另外一篇 Ubuntu Linux 18.04 安裝與使用 PostgreSQL 資料庫教學,或是官方的文件。

參考資料:LinodeJOVE PATER LAB