如何在 Ubuntu 20.04 上安装 PostgreSQL

Home 程式開發 如何在 Ubuntu 20.04 上安装 PostgreSQL
如何在 Ubuntu 20.04 上安装 PostgreSQL
教學

介紹

PostgreSQL 或 Postgres 是一種關聯式資料庫管理系統,提供 SQL 查詢語言的實現。 它符合標準並具有許多高級功能,例如可靠性與並行性。

本教學將引導您在 Ubuntu 20.04 服務器上快速啟動和運作 Postgres,從安裝 PostgreSQL 到設定新用戶和資料庫。

第 1 步 — 安裝 PostgreSQL

要安裝 PostgreSQL,首先更新服務器本地的套件索引:

$ sudo apt update

然後,安裝 Postgres 套件以及添加一些額外實用程式和功能的 -contrib 套件:

$ sudo apt install postgresql postgresql-contrib

確保服務已啟動:

$ sudo systemctl start postgresql.service

第 2 步 — 使用 PostgreSQL 角色和資料庫

預設情況下,Postgres 使用一個稱為“角色”(Role)的概念來處理身份驗證和授權。 在某些方面,它們類似於常規的 Unix 風格的用戶和組。

安裝後,Postgres 使用 ident 身份驗證,這意味著它將 Postgres 角色與匹配的 Unix/Linux 系統帳戶相關聯。 如果 Postgres 中存在角色,則具有相同名稱的 Unix/Linux 用戶名可以作為該角色登錄。

安裝過程建立了一個名為 postgres 的用戶帳戶,該帳戶與預設 Postgres 角色相關聯。 有幾種方法可以利用此帳戶訪問 Postgres。 一種方法是通過執行以下命令切換到服務器上的 postgres 帳戶:

$ sudo -i -u postgres

然後您可以通過執行以下命令訪問 Postgres 命令列:

$ psql

這將使您登錄到 PostgreSQL 命令列,從這裡您可以立即自由地與資料庫管理系統互動。

postgres=# \q

要退出 PostgreSQL 命令列,請執行以下命令:

這將使您回到 postgres Linux 命令列。 要返回到您的常規系統用戶,請執行 exit 命令:

postgres@server:~$ exit

連接到 Postgres 命令列的另一種方法是使用 sudo 直接以 postgres 帳戶執行 psql 命令:

$ sudo -u postgres psql

這將使您直接登錄 Postgres,而無需中間的 bash shell。

同樣,您可以通過執行以下命令退出互動式 Postgres 對話:

postgres=# \q

第 3 步 — 建立新角色

如果您以 postgres 帳戶登錄,則可以通過執行以下命令來建立新角色:

postgres@server:~$ createuser --interactive

相反,如果您更喜歡對每個命令使用 sudo 而不從您的普通帳戶切換,請運行:

sudo -u postgres createuser --interactive

無論哪種方式,腳本都會提示您一些選擇,並根據您的回應執行正確的 Postgres 命令來建立符合您要求的用戶。

Output
Enter name of role to add: sammy
Shall the new role be a superuser? (y/n) y

第 4 步 — 建立新的資料庫

Postgres 身份驗證系統預設做出的另一個假設是,對於任何用於登錄的角色,該角色將擁有一個可以訪問的同名資料庫。

這意味著如果您在上一節中創建的用戶名為 sammy,則該角色將嘗試連接到預設情況下也稱為“sammy”的資料庫。 您可以使用 createdb 命令建立適當的資料庫。

如果您以 postgres 帳戶登錄,您可以輸入如下內容:

postgres@server:~$ createdb sammy

相反,如果您更喜歡對每個命令使用 sudo 而不從您的普通帳戶切換,則可以運行:

$ sudo -u postgres createdb sammy

有時候您的作業系統可能沒有 createusercreatedb 這些二進位檔案,又或者您可能出於某種原因想純粹通過 psql 執行此操作,那麼這些指令會是您想要的:

依序為登入 PostgreSQL 命令列,於裡面建立資料庫、建立使用者與密碼、並且授予該使用者操作資料庫的所有權限。

$ sudo -u postgres psql
postgres=# CREATE DATABASE yourdbname;
postgres=# CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass';
postgres=# GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser;

第 5 步 — 使用新角色打開 Postgres 提示

要使用基於 ident 的身份驗證登錄,您需要一個與您的 Postgres 角色和資料庫同名的 Linux 用戶。

如果您沒有匹配的 Linux 用戶可用,您可以使用 adduser 命令建立一個。 您必須從具有 sudo 權限的非 root 帳戶執行此操作(意思是,未以 postgres 用戶身份登錄):

$ sudo adduser sammy

一旦這個新帳戶可用,您可以通過執行以下命令切換並連接到資料庫:

$ sudo -i -u sammy
$ psql

或者,您可以執行此一行操作:

$ sudo -u sammy psql

倘若所有的元件都正確設定了的話,此命令將自動讓您登錄。

如果您希望您的用戶連接到不同的資料庫,您可以通過資料庫,如下所示:

$ psql -d postgres

登錄後,您可以通過執行以下命令檢查您當前的連接狀態:

sammy=# \conninfo
Output
You are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".

相關文章