PostgreSQL 14 是一款開源關聯式資料庫管理系統,以其穩健性、可擴展性和廣泛的功能集而聞名。 PostgreSQL 14 中引入的關鍵功能之一是處理增量排序的能力,這顯著提高了特定工作負載的查詢效能。此版本還增強了並行處理、清理和 JSON 處理,使其成為企業和開發環境的有力選擇。儘管 PostgreSQL 14 比最新版本晚了幾個版本,但它仍然是一個可靠且廣受支援的選項。
若要使用命令列終端機在 Fedora 40 或 39 上安裝 PostgreSQL 14,您可以直接從 PostgreSQL RPM 版本匯入並安裝。此方法可確保您擁有最新版本並使將來的升級變得簡單。
在安裝 PostgreSQL 14 之前更新 Fedora
首先,更新您的 Fedora 系統以確保所有軟體包都是最新的。此步驟有助於防止 PostgreSQL 安裝期間的潛在衝突。執行以下命令:
sudo dnf update --refresh
導入 PostgreSQL RPM GPG 金鑰儲存庫
首先導入 PostgreSQL 儲存庫。此操作可保證存取最新的 PostgreSQL 版本。選擇並匯入與您的 Fedora Linux 版本相對應的儲存庫。
導入 PostgreSQL 14
注意:請記得匯入適合您的 Fedora 發行版本的正確版本:
對於 Fedora 40,請使用下列命令:
sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-40-x86_64/pgdg-fedora-repo-latest.noarch.rpm
對於 Fedora 39,命令略有不同:
sudo dnf install http://apt.postgresql.org/pub/repos/yum/reporpms/F-39-x86_64/pgdg-fedora-repo-latest.noarch.rpm
停用預設 PostgreSQL 模組(如果適用)
Fedora 的預設儲存庫通常包含 PostgreSQL 作為模組。若要優先從 PostgreSQL 儲存庫進行安裝,建議停用此預設模組。使用以下命令來執行此操作:
sudo dnf -qy module disable postgresql
完成 PostgreSQL 14 安裝
繼續安裝 PostgreSQL 14
.使用此命令安裝 PostgreSQL 14 伺服器及其文件:
sudo dnf install postgresql14-server postgresql14-docs -y
此外,您也可以如下安裝開發套件。
sudo dnf install postgresql14-devel
最後,您可以安裝一些常用的附加模組、二進位檔案和函式庫。
sudo dnf install postgresql14-libs postgresql14-odbc postgresql14-plperl postgresql14-plpython3 postgresql14-pltcl postgresql14-tcl postgresql14-contrib postgresql14-llvmjit
初始化 PostgreSQL 14 資料庫
安裝後,必須執行以下命令來初始化資料庫;如果不這樣做將阻止 PostgreSQL 運作。
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
啟用 PostgreSQL 14 Systemd 服務
預設情況下,PostgreSQL 未啟動。使用以下命令在系統啟動時立即啟動該服務。
sudo systemctl enable postgresql-14 --now
驗證 PostgreSQL 14 安裝
接下來,使用以下命令驗證狀態以確保軟體安裝和啟動沒有錯誤。
systemctl status postgresql-14
PostgreSQL 14 的 Systemd 服務指令
管理 PostgreSQL 14 服務
PostgreSQL 資料庫伺服器在 Fedora 上以名為「postgresql-14」的 systemd 服務運作。系統管理員可以使用一組對於日常維護和故障排除至關重要的 systemd 命令來管理此服務。
停止 PostgreSQL 14 伺服器
若要停止 PostgreSQL 服務(可能是為了維護或設定變更),請使用下列命令:
sudo systemctl stop postgresql-14
啟動 PostgreSQL 14 伺服器
若要啟動 PostgreSQL 服務,尤其是在停止或初始安裝之後,請使用下列命令:
sudo systemctl start postgresql-14
重新啟動 PostgreSQL 14 伺服器
如果您需要套用新設定或重設 PostgreSQL 服務,則重新啟動指令非常有用。它透過一個操作停止然後啟動服務:
sudo systemctl restart postgresql-14
重新載入 PostgreSQL 14 伺服器
reload 指令非常適合在不停止資料庫的情況下套用設定變更。它刷新服務而不中斷資料庫操作:
sudo systemctl reload postgresql-14
檢查 PostgreSQL 14 服務狀態
若要驗證 PostgreSQL 服務的運作狀態,請使用此命令。它提供有關服務狀態的信息,包括它是否處於活動狀態、空閒狀態或遇到問題:
systemctl status postgresql-14
配置 PostgreSQL 14
切換到 Postgres 14 帳戶
造訪 Postgres 14 帳戶
在 PostgreSQL 安裝過程中,會自動建立一個名為「postgres」的使用者帳戶。該帳戶與預設的 Postgres 角色關聯,該角色擁有超級使用者權限。若要存取 PostgreSQL 資料庫,請使用下列命令切換至「postgres」帳戶:
sudo -i -u postgres
輸入 PostgreSQL 14 提示符
切換到「postgres」使用者後,透過鍵入 psql 直接存取 PostgreSQL 提示符。連線成功後,終端機提示符號變更為 postgres=#,表示與資料庫的活動連線。
要退出 PostgreSQL 資料庫,只需鍵入:
psql
存取 PostgreSQL 14 的替代方法
使用 Sudo 直接訪問
或者,可以使用以下命令與 PostgreSQL 資料庫交互,而無需切換帳戶:
exit
切換 Postgres 帳戶的替代方法
在不更改使用者帳戶的情況下與 Postgres 資料庫互動的另一種方法是使用 sudo 命令直接連接。您可以透過鍵入以下內容來執行此操作:
sudo -u postgres psql
該命令可以有效地與資料庫進行快速交互,因為它繞過了其他終端命令。
若要退出,與第一種方法一樣,請鍵入 exit。
exit
使用 PostgreSQL 14 建立使用者和資料庫
建立新使用者角色
只有超級使用者和具有 createrole 權限的角色才能建立新角色。若要建立用戶,請使用以下命令:
sudo su - postgres -c "createuser <name>"
代替與所需的使用者名稱。
建立新資料庫
接下來,為新建立的使用者建立 PostgreSQL 資料庫:
sudo su - postgres -c "createdb <namedb>"
代替與所需的資料庫名稱。
授予權限
若要向新使用者授予新資料庫的權限,請先以超級使用者身分連接到 PostgreSQL 資料庫:
sudo -u postgres psql
然後,向新使用者授予所有權限:
GRANT ALL PRIVILEGES ON DATABASE <usernamedb> TO <name>;
代替與資料庫名稱和與用戶名。若要退出,請輸入 exit。
exit
為 PostgreSQL 14 配置 Firewalld
為 PostgreSQL 14 建立 Firewalld 規則
確保 PostgreSQL 的安全性不僅涉及安裝和運行該服務;還涉及其他方面。有效配置網路存取控制至關重要。這可以保護資料庫並確保只有合法流量才能到達它。我們將透過設定 Firewalld(Fedora 中的動態防火牆管理器)來保護 PostgreSQL。
為 PostgreSQL 建立 Firewalld 區域
首先,在firewalld 中為PostgreSQL 建立一個專用區域。這種方法可以在管理特定於 PostgreSQL 的規則時實現更精細的控制和清晰度:
sudo firewall-cmd --permanent --new-zone=postgres
此指令建立一個「postgres」區域,隔離 PostgreSQL 相關的防火牆規則,以便於管理。
限制對已知 IP 位址的訪問
允許從單一IP位址訪問
對於只有一個客戶端或伺服器應該存取 PostgreSQL 的場景:
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4
將 1.2.3.4 替換為需要存取資料庫的特定 IP 位址。
允許子網
在企業網路等環境中,可能需要允許整個子網路:
sudo firewall-cmd --permanent --zone=postgres --add-source=192.168.1.0/24
這裡,192.168.1.0/24 代表子網路。調整該值以符合所需的網路範圍。
授予對多個特定 IP 的存取權限
對於多個已知IP需要存取的場景:
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.4
sudo firewall-cmd --permanent --zone=postgres --add-source=1.2.3.5
對每個 IP 位址重複此命令。
管理 PostgreSQL 14 的連接埠訪問
配置預設 PostgreSQL 連接埠
對於使用預設連接埠的標準安裝:
sudo firewall-cmd --permanent --zone=postgres --add-port=5432/tcp
自訂連接埠配置
如果 PostgreSQL 在非標準連接埠上運作(例如 5433):
sudo firewall-cmd --permanent --zone=postgres --add-port=5433/tcp
根據您的特定 PostgreSQL 設定更改連接埠號碼。
實施和驗證新的防火牆規則
應用程式變更
若要啟動新規則,請重新載入firewalld:
sudo firewall-cmd --reload
此步驟確保新配置立即生效。
檢查配置
配置後,謹慎檢查「postgres」區域設定的規則:
sudo firewall-cmd --list-all --zone=postgres
此指令顯示「postgres」區域中的所有活動規則,以便驗證 setup.exp
PostgreSQL 14 的遠端存取配置
設定遠端存取的監聽介面
修改 PostgreSQL 配置
要啟用對 PostgreSQL 的遠端訪問,需要調整 postgresql.conf 檔案中的介面設定。此過程允許 PostgreSQL 接受來自各種來源的連線。
確保 FirewallD 設定到位以允許遠端訪問,如前面部分所述。
存取設定檔
若要修改 PostgreSQL 14 的配置,請使用 nano 文字編輯器:
sudo nano /var/lib/pgsql/14/data/postgresql.conf
編輯收聽地址
在「連線設定」部分中,將listen_addresses從「localhost」變更為您的要求:
- 監聽所有介面:若要接受來自任何來源的連接,請將listen_addresses 設定為「*」。
listen_addresses = '*'
- 偵聽特定介面:指定 IP 位址以限制與特定介面的連線。
listen_addresses = '192.168.1.100'
編輯後,儲存檔案(Ctrl + O,然後 Enter)並退出(Ctrl + X)。
重啟 PostgreSQL 14 服務
透過重新啟動 PostgreSQL 服務來應用變更:
sudo systemctl restart postgresql-14
確認監聽端口
使用 ss 實用程式驗證 PostgreSQL 是否正在偵聽指定連接埠:
ss -nlt | grep 5432
如果成功,您應該在終端連接埠中看到這些連接埠。
pg_hba.conf 中的高級遠端連線設定
定制 pg_hba.conf 檔案中的訪問
為了對遠端連線進行細粒度控制,pg_hba.conf 檔案提供了各種自訂選項。
編輯 pg_hba.conf
開啟 pg_hba.conf 檔案:
sudo nano /var/lib/pgsql/14/data/pg_hba.conf
配置遠端存取規則
允許特定使用者和資料庫
若要限制從特定 IP 位址存取特定使用者和資料庫:
主機 mydatabase myuser 192.168.1.100/32 md5
允許子網
對於更廣泛的訪問,例如整個子網:
主機所有所有192.168.1.0/24 md5
使用不同的身份驗證方法
選擇適合您環境的身份驗證方法。對於基於密碼的身份驗證:
主機全部 全部 0.0.0.0/0 md5
對於信任認證(注意安全風險):
託管所有所有 0.0.0.0/0 信任
配置所需規則後,儲存並退出編輯器。
應用和驗證更改
重新啟動 PostgreSQL 以實施新配置:
sudo systemctl restart postgresql-14
使用以下命令驗證 pg_hba.conf 中的有效設定:
cat /var/lib/pgsql/14/data/pg_hba.conf
為 PostgreSQL 14 設定 SELinux
在 Fedora 上設定 PostgreSQL 14 時,正確設定 SELinux(安全增強型 Linux)至關重要。 SELinux 透過執行存取控制策略增加了一層安全性。配置錯誤可能會導致常見問題,例如存取拒絕或服務中斷。
將 SELinux 設定為寬容模式以進行故障排除
暫時調整SELinux模式
如果您遇到 PostgreSQL 啟動或正常運作的問題,請考慮暫時將 SELinux 設定為「寬容」模式。此模式允許在「強制」模式下被阻止的操作,但會記錄它們以供審查:
sudo setenforce 0
監控 AVC 拒絕日誌
檢查 SELinux 日誌中是否有 AVC(存取向量快取)拒絕:
sudo restorecon -Rv /var/lib/pgsql/14/data/
此命令有助於識別阻止 PostgreSQL 正常運作的 SELinux 策略。
為 PostgreSQL 14 設定 SELinux 策略
恢復預設 SELinux 上下文
若要確保檔案具有正確的 SELinux 上下文,請使用 Restorecon 指令。 PostgreSQL 目錄或檔案的不正確上下文可能會導致存取問題:
sudo setsebool -P postgresql_can_rnetwork 1
此指令啟用 postgresql_can_rnetwork 布林值,允許網路連線。
進階 SELinux 配置
自訂 SELinux 策略
在更複雜的設定中,例如當 PostgreSQL 與其他服務或自訂連接埠互動時,可能需要建立自訂 SELinux 策略。利用audit2allow 工具根據特定需求產生自訂策略模組。
應用自訂策略
建立自訂策略後,使用以下方法套用它們:
sudo semodule -i my_postgresql.pp
將 my_postgresql.pp 替換為您的策略檔案的名稱。
驗證 SELinux 設定
檢查 SELinux 狀態
確認 SELinux 狀態以確保它已針對您的 PostgreSQL 安裝正確設定:
sestatus
驗證文件上下文
驗證與 PostgreSQL 相關的檔案和目錄是否具有適當的 SELinux 上下文:
ls -Z /var/lib/pgsql/14/data/
結論
在 Fedora 系統上成功安裝 PostgreSQL 14 後,您可以利用其高級功能和強大的效能來滿足您的資料庫需求。定期檢查 PostgreSQL RPM 版本的更新和未來升級,以保持您的系統最新狀態。
有關使用 PostgreSQL 的更多信息,請訪問官方 文件.