PostgreSQL 或 Postgres 是一種關聯式資料庫管理系統,提供 SQL 查詢語言的實現。 它符合標準並具有許多高級功能,例如可靠性與並行性。
本教學將引導您在 Ubuntu 20.04 服務器上快速啟動和運作 Postgres,從安裝 PostgreSQL 到設定新用戶和資料庫。
要安裝 PostgreSQL,首先更新服務器本地的套件索引:
$ sudo apt update
然後,安裝 Postgres 套件以及添加一些額外實用程式和功能的 -contrib
套件:
$ sudo apt install postgresql postgresql-contrib
確保服務已啟動:
$ sudo systemctl start postgresql.service
預設情況下,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
如果您以 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
Postgres 身份驗證系統預設做出的另一個假設是,對於任何用於登錄的角色,該角色將擁有一個可以訪問的同名資料庫。
這意味著如果您在上一節中創建的用戶名為 sammy,則該角色將嘗試連接到預設情況下也稱為“sammy”的資料庫。 您可以使用 createdb
命令建立適當的資料庫。
如果您以 postgres 帳戶登錄,您可以輸入如下內容:
postgres@server:~$ createdb sammy
相反,如果您更喜歡對每個命令使用 sudo 而不從您的普通帳戶切換,則可以運行:
$ sudo -u postgres createdb sammy
有時候您的作業系統可能沒有 createuser
或 createdb
這些二進位檔案,又或者您可能出於某種原因想純粹通過 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;
要使用基於 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".
© Copyrights 從想像到創造. All Rights Reserved.