PostgreSQL 16 標誌著資料庫管理系統領域的重大更新。 PostgreSQL 16 於 2023 年 9 月 14 日正式發布,引入了許多新功能和增強功能,鞏固了其作為用戶、管理員和開發人員的強大且多功能資料庫解決方案的地位。
以下是 PostgreSQL 16 的一些主要功能亮點:
- 平行化增強:PostgreSQL 16 允許 FULL 和內部右 OUTER 雜湊連接的並行化,從而顯著提高查詢效能。
- 複製改進:它引入了從備用伺服器進行邏輯複製的功能,並允許訂閱者並行應用大型事務。
- 監控能力:新增pg_stat_io視圖可以更深入監控I/O統計資料。
- SQL/JSON 支持:此版本引入了 SQL/JSON 建構函數和身份函數,擴展了其資料處理功能。
- 真空冷凍性能:PostgreSQL 16 提高了真空凍結的效能,有助於高效的資料庫維護。
- 正規表示式匹配:pg_hba.conf 中的使用者名稱和資料庫名稱以及 pg_ident.conf 中的使用者名稱的正規表示式匹配增強了安全性和靈活性。
現在,讓我們繼續技術操作並深入研究 PostgreSQL 16 的安裝過程。
安裝 PostgreSQL 16 的先決條件
若要在 Ubuntu 上成功安裝 PostgreSQL 16,請確保符合下列要求:
推薦的硬體和支援的 Ubuntu 版本
成分 | 要求 |
---|---|
處理器 | 1 GHz 或更快的相容處理器 |
記憶體 | 2 GB 或更多 |
磁碟空間 | 512 MB HDD(資料或支援元件需要額外的磁碟空間) |
支援的版本 | Ubuntu 24.04(高貴), Ubuntu 22.04(傑米), Ubuntu 20.04(焦點) |
其他要求
要求 | 描述 |
---|---|
網路連線 | 需要下載 PostgreSQL 16 和未來的更新。 |
終端約定 | 所有終端命令都應以普通用戶身份運行 sudo 特權。 |
CLI 指令 | 使用命令列介面 (CLI) 進行安裝和設定。 |
導入 PostgreSQL APT 儲存庫
在安裝 PostgreSQL 16 之前更新 Ubuntu
首先確保您的 Ubuntu 系統是最新的。此步驟對於維護系統穩定性和相容性至關重要:
sudo apt update
接下來,升級所有過期的軟體包:
sudo apt upgrade
安裝 PostgreSQL 16 的初始包
為了幫助安裝資料庫軟體,請安裝以下軟體包:
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https lsb-release curl -y
新增 PostgreSQL 16 APT 儲存庫
首先,導入 PostgreSQL GPG 金鑰。這是為了確保您要安裝的軟體包是正版且未被篡改:
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql.gpg > /dev/null
選擇正確的 PostgreSQL 16 儲存庫
現在,是時候根據您的需求選擇合適的 PostgreSQL 16 儲存庫了。
用於生產/通用的穩定儲存庫
穩定儲存庫是大多數使用者的首選,尤其是在生產環境中。它定期更新穩定且安全的版本:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list
供開發人員使用的快照或測試儲存庫
如果您處於開發或測試階段,請考慮快照或測試儲存庫。但請記住,由於其穩定性較差,它們不可用於生產用途。
用於尖端測試的快照儲存庫
在這裡獲取最新的快照:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-snapshot main | sudo tee /etc/apt/sources.list.d/postgresql.list
最新功能的測試儲存庫
若要測試最新功能,此命令將為您設定:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-testing main | sudo tee /etc/apt/sources.list.d/postgresql.list
透過終端命令安裝 PostgreSQL 16
刷新 APT 包索引來源列表
新增穩定或測試 PostgreSQL 儲存庫後,更新儲存庫來源清單很重要。此操作可確保您的系統識別新新增的 PostgreSQL 儲存庫:
sudo apt update
透過APT指令安裝PostgreSQL 16
現在,讓我們繼續安裝 PostgreSQL 16。
sudo apt install postgresql-client-16 postgresql-16
驗證 PostgreSQL 安裝
安裝完成後,確認 PostgreSQL 已正確安裝並運作至關重要。此命令檢查 PostgreSQL 服務的狀態:
systemctl status postgresql
激活 PostgreSQL 16
如果 PostgreSQL 未處於活動狀態,請使用此指令啟動 PostgreSQL 服務。這也確保 PostgreSQL 隨您的系統自動啟動:
sudo systemctl enable postgresql --now
管理 PostgreSQL 16 服務
停止 PostgreSQL 16 伺服器
若要暫時停止 PostgreSQL 服務(可能是為了維護或設定變更),請使用下列命令:
sudo systemctl stop postgresql
啟動 PostgreSQL 16 伺服器
當您準備啟動 PostgreSQL 服務時,尤其是在停止或初始安裝之後,此命令會派上用場:
sudo systemctl start postgresql
重新啟動 PostgreSQL 16 伺服器
在更改配置或更新的情況下,通常需要重新啟動。此命令將重新啟動 PostgreSQL 服務,套用所有新變更:
sudo systemctl restart postgresql
重新載入 PostgreSQL 16 伺服器
若要重新載入 PostgreSQL 服務而不中斷其操作,請使用此命令。當您需要應用較小的配置變更時,它非常有用:
sudo systemctl reload postgresql
檢查 PostgreSQL 16 狀態
若要驗證 PostgreSQL 服務的運作狀態,包括它是否處於活動狀態且執行階段沒有出現問題,請使用:
systemctl status postgresql
在系統啟動時啟用 PostgreSQL 16
如果 PostgreSQL 未設定為自動啟動,此命令將啟用它,確保它在後續系統啟動時立即處於活動狀態:
sudo systemctl enable postgresql --now
PostgreSQL 16 的基本範例指令
造訪 Postgres 使用者帳戶
在 PostgreSQL 中,「postgres」使用者是預設的超級使用者角色。該帳戶對於執行管理命令至關重要。若要切換到此帳戶,請使用:
sudo -i -u postgres
進入帳戶後,進入 PostgreSQL 命令列介面:
psql
提示 postgres=#
確認您與 PostgreSQL 環境的連線。要退出,只需輸入 exit
.
無需用戶切換即可快速存取 PostgreSQL
為了在不更改使用者帳戶的情況下快速操作,可以直接存取 PostgreSQL:
sudo -u postgres psql
此命令可以節省日常任務的時間。若要離開此介面,請輸入 exit
.
建立新的 PostgreSQL 使用者角色
PostgreSQL 的靈活性允許超級使用者創建使用者角色。若要建立新的使用者角色,請發出以下指令:
sudo su - postgres -c "createuser <username>"
代替 <username>
與您想要的用戶名。
啟動新的 PostgreSQL 資料庫
若要為您的使用者設定新資料庫:
sudo su - postgres -c "createdb <database_name>"
代替 <database_name>
與您的資料庫的預期名稱。
為資料庫分配使用者權限
安全地分配資料庫存取權限:
sudo -u postgres psql
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>;
代替 <database_name>
和 <username>
按要求。透過輸入得出結論 exit
.
為 PostgreSQL 16 設定 UFW 防火牆
安裝並啟動 UFW 防火牆
確保您的系統上安裝並啟動了 UFW(簡單防火牆)。 UFW 簡化了防火牆管理,對於保護網路流量至關重要:
sudo apt install ufw
sudo ufw enable
為 PostgreSQL 16 設定 UFW 規則
PostgreSQL 預設在連接埠 5432 上進行通訊。有必要配置 UFW 以允許此連接埠上的流量,尤其是從遠端位置連接時。
允許子網訪問
若要允許存取子網路內的一系列 IP 位址,請使用下列命令:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
代替 192.168.1.0/24
與您的特定子網路範圍。
允許個人IP訪問
若要從單一 IP 位址授予對 PostgreSQL 的存取權限,請使用:
sudo ufw allow proto tcp from 192.168.1.0 to any port 5432
調整 192.168.1.0
到您想要允許的 IP 位址。
這些只是基本範例。您應該考慮盡可能長期鎖定任何面向公眾的資料庫。
配置 PostgreSQL 16
在 PostgreSQL 16 中啟用遠端存取
設定 PostgreSQL 以接受遠端連線涉及調整預設本機介面的偵聽位址。
修改遠端存取配置
存取 PostgreSQL 設定檔:
sudo nano /etc/postgresql/16/main/postgresql.conf
在“連接設定”部分中,更改 listen_addresses = 'localhost'
根據您的具體需求:
- 將“localhost”替換為單一 IP 所需的 IP 位址。
- 若要允許所有介面上的連接,請使用
listen_addresses = '*'
.
進行變更後,使用 CTRL+O 儲存並使用 CTRL+X 退出。然後,重新啟動 PostgreSQL:
sudo systemctl restart postgresql
透過以下方式驗證變更:
ss -nlt | grep 5432
在輸出中,您應該會看到連接埠 5432 處於活動狀態。
配置 pg_hba.conf 以增強安全性
編輯 pg_hba.conf
用於微調存取控制的文件:
sudo nano /etc/postgresql/16/main/pg_hba.conf
自訂用戶和資料庫訪問
在 pg_hba.conf
,您可以指定哪些使用者和資料庫可以連接以及來自哪些位址。以下是一些常見的配置:
- 使用者特定的訪問:將“all”替換為特定用戶名,以僅限制該用戶的存取。
- 特定於資料庫的訪問:指定特定資料庫而不是允許存取所有資料庫。
- 地址限制:定義特定的 IP 位址或範圍(例如,
192.168.1.0/24
) 來限制連線的發起位置。
選擇身份驗證方法
PostgreSQL 支援多種身份驗證方法:
- MD5:需要密碼並使用MD5加密。
- 密碼:使用純文字密碼(安全性較低,不建議用於生產)。
- 同行:依賴作業系統層級的使用者身分(本機連線常見)。
- 識別:與「peer」類似,通常用於網路連線。
- SCRAM-SHA-256:更安全的方法,建議超過MD5或密碼。
調整性能 postgresql.conf
對於效能優化,請考慮以下設置 postgresql.conf
:
- 共享緩衝區:調整 PostgreSQL 用於共享記憶體緩衝區的記憶體量。
- 工作記憶體:設定用於內部排序和雜湊操作的記憶體。
- 最大連線數:控制資料庫的最大並發連線數。
監控和診斷
啟用詳細日誌記錄以深入了解資料庫效能和問題:
- 日誌語句:設定為「all」以記錄執行的每個 SQL 語句。
- 日誌持續時間:啟用後,記錄每個已完成 SQL 語句的持續時間。
結論
我們剛剛完成了在 Ubuntu 上設定 PostgreSQL 16 的綜合指南,涵蓋從安裝和設定遠端存取到使用防火牆規則加強安全性的所有內容。請記住,雖然 PostgreSQL 啟動並運行固然很棒,但真正的關鍵在於定期維護和安全檢查。
有用的連結
以下是一些與在 Ubuntu Linux 上安裝 PostgreSQL 16 相關的有用連結:
- PostgreSQL 16 發行說明:閱讀 PostgreSQL 16 的發行說明,以了解新功能、增強功能和錯誤修復。
- PostgreSQL GitHub 儲存庫:訪問官方 PostgreSQL GitHub 儲存庫以存取原始程式碼、報告問題並為開發做出貢獻。
- PostgreSQL 文檔:存取全面的 PostgreSQL 文件以取得詳細的安裝、設定和使用指南。
- PostgreSQL 社群:加入 PostgreSQL 社群與其他使用者聯繫、參與討論並獲得支持。