如何在 Fedora 40 或 39 Linux 上安裝 PostgreSQL 14

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
Fedora Linux 上 PostgreSQL 14 的 pg_hba 設定文件
Fedora Linux 上 PostgreSQL 14 的 pg_hba 設定檔的範例螢幕截圖
配置遠端存取規則
允許特定使用者和資料庫

若要限制從特定 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 的更多信息,請訪問官方 文件.

Joshua James
跟我來
Joshua James 的最新帖子 (看全部)

發佈留言