如何在Ubuntu 20.04上安裝PostgreSQL

PostgreSQL或Postgres是一個開放源代碼的通用對象關係數據庫管理系統,具有許多高級功能,使您可以構建容錯環境或複雜的應用程序。

在本指南中,我們將說明如何在Ubuntu 20.04上安裝PostgreSQL數據庫服務器,並探索PostgreSQL數據庫管理的基礎知識。

先決條件

為了能夠安裝軟件包,您需要以root或具有sudo特權的用戶身份登錄。

在Ubuntu上安裝PostgreSQL#

在撰寫本文時,可從官方Ubuntu存儲庫中獲得的PostgreSQL的最新版本是PostgreSQL版本10.4。

運行以下命令以在Ubuntu上安裝PostgreSQL服務器:

sudo apt updatesudo apt install postgresql postgresql-contrib

我們還將安裝PostgreSQL contrib軟件包,該軟件包為PostgreSQL數據庫系統提供了一些附加功能。

安裝完成後,PostgreSQL服務將自動啟動。 使用 psql 通過連接到PostgreSQL數據庫服務器並打印其版本來驗證安裝的工具:

sudo -u postgres psql -c "SELECT version();"
PostgreSQL 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-8ubuntu1) 9.3.0, 64-bit

而已。 PostgreSQL已安裝,您可以開始使用它了。

PostgreSQL角色和身份驗證方法

PostgreSQL中的數據庫訪問權限是通過角色的概念來處理的。 角色可以代表一個數據庫用戶或一組數據庫用戶。

PostgreSQL支持多種身份驗證方法。 最常用的方法是:

  • 信任-角色可以在沒有密碼的情況下進行連接,只要 pg_hba.conf 被滿足。
  • 密碼-角色可以通過提供密碼進行連接。 密碼可以存儲為 scram-sha-256md5password (明文)。
  • 標識符-僅在TCP / IP連接上受支持。 它通過獲取客戶端的操作系統用戶名以及可選的用戶名映射來工作。
  • 對等-與Ident相同,但僅在本地連接上受支持。

PostgreSQL客戶端身份驗證在名為的配置文件中定義 pg_hba.conf。 默認情況下,PostgreSQL對本地連接使用對等身份驗證方法。

postgres 用戶在安裝PostgreSQL時自動創建。 該用戶是PostgreSQL實例的超級用戶,它等效於MySQL根用戶。

以登錄到PostgreSQL服務器 postgres 用戶,請先切換到該用戶,然後使用 psql 效用:

sudo su - postgrespsql

從這裡,您可以與PostgreSQL實例進行交互。 要退出PostgreSQL shell,請輸入:

q

在不切換用戶的情況下訪問PostgreSQL提示符的另一種方法是使用 sudo 命令:

sudo -u postgres psql

通常,您應該以以下方式登錄數據庫服務器 postgres 僅來自本地主機。

創建PostgreSQL角色和數據庫

只有超級用戶和角色 CREATEROLE 特權可以創建新角色。

下面的示例演示如何創建一個名為 john 一個名為 johndb 並授予數據庫特權:

  1. 創建一個新的PostgreSQL角色:

    sudo su - postgres -c "createuser john"
  2. 創建一個新的PostgreSQL數據庫:

    sudo su - postgres -c "createdb johndb"

要向數據庫上的用戶授予權限,請連接到PostgreSQL shell:

sudo -u postgres psql

並運行以下查詢:

grant all privileges on database johndb to john;

啟用對PostgreSQL服務器的遠程訪問

默認情況下,PostgreSQL服務器僅在本地接口上監聽(127.0.0.1)。

要啟用對PostgreSQL服務器的遠程訪問,請打開配置文件 postgresql.conf 並添加 listen_addresses="*" 在裡面 CONNECTIONS AND AUTHENTICATION 部分。

sudo nano /etc/postgresql/12/main/postgresql.conf

/etc/postgresql/12/main/postgresql.conf

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'     # what IP address(es) to listen on;

保存文件並重新啟動PostgreSQL服務:

sudo service postgresql restart

使用驗證更改 ss 效用:

ss -nlt | grep 5432

輸出顯示PostgreSQL服務器正在所有接口上監聽(0.0.0.0):

LISTEN  0        244              0.0.0.0:5432           0.0.0.0:*              
LISTEN  0        244                 [::]:5432              [::]:* 

下一步是通過編輯服務器將服務器配置為接受遠程連接 pg_hba.conf 文件。

以下是一些顯示不同用例的示例:

/etc/postgresql/12/main/pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane can access all databases from all locations using md5 password
host    all             jane            0.0.0.0/0                md5

# The user jane can access only the janedb from all locations using md5 password
host    janedb          jane            0.0.0.0/0                md5

# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust

最後一步是打開端口 5432 在您的防火牆中。

假設您正在使用 UFW 管理防火牆,並且您希望允許從 192.168.1.0/24 子網,您將運行以下命令:

sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432

確保將防火牆配置為僅接受來自受信任IP範圍的連接。

結論#

我們已經向您展示了如何在Ubuntu 20.04服務器上安裝和配置PostgreSQL。 有關該主題的更多信息,請查閱PostgreSQL 12文檔。

如有任何疑問,請在下面發表評論。

ubuntu postgresql數據庫

Sidebar