如何在Ubuntu 20.04上安裝PostgreSQL
PostgreSQL或Postgres是一個開放源代碼的通用對象關係數據庫管理系統,具有許多高級功能,使您可以構建容錯環境或複雜的應用程序。
在本指南中,我們將說明如何在Ubuntu 20.04上安裝PostgreSQL數據庫服務器,並探索PostgreSQL數據庫管理的基礎知識。
先決條件
為了能夠安裝軟件包,您需要以root或具有sudo特權的用戶身份登錄。
在Ubuntu上安裝PostgreSQL#
在撰寫本文時,可從官方Ubuntu存儲庫中獲得的PostgreSQL的最新版本是PostgreSQL版本10.4。
運行以下命令以在Ubuntu上安裝PostgreSQL服務器:
sudo apt update
sudo 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-256
,md5
和password
(明文)。 - 標識符-僅在TCP / IP連接上受支持。 它通過獲取客戶端的操作系統用戶名以及可選的用戶名映射來工作。
- 對等-與Ident相同,但僅在本地連接上受支持。
PostgreSQL客戶端身份驗證在名為的配置文件中定義 pg_hba.conf
。 默認情況下,PostgreSQL對本地連接使用對等身份驗證方法。
的 postgres
用戶在安裝PostgreSQL時自動創建。 該用戶是PostgreSQL實例的超級用戶,它等效於MySQL根用戶。
以登錄到PostgreSQL服務器 postgres
用戶,請先切換到該用戶,然後使用 psql
效用:
sudo su - postgres
psql
從這裡,您可以與PostgreSQL實例進行交互。 要退出PostgreSQL shell,請輸入:
q
在不切換用戶的情況下訪問PostgreSQL提示符的另一種方法是使用 sudo
命令:
sudo -u postgres psql
通常,您應該以以下方式登錄數據庫服務器 postgres
僅來自本地主機。
創建PostgreSQL角色和數據庫
只有超級用戶和角色 CREATEROLE
特權可以創建新角色。
下面的示例演示如何創建一個名為 john
一個名為 johndb
並授予數據庫特權:
創建一個新的PostgreSQL角色:
sudo su - postgres -c "createuser john"
創建一個新的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數據庫