PostgreSQL是一個開源的通用對象關系數(shù)據(jù)庫管理系統(tǒng)觉至,PostgreSQL支持大部分的SQL標準并且提供了很多其他現(xiàn)代特性,如復雜查詢睡腿、外鍵语御、觸發(fā)器、視圖席怪、事務完整性沃暗、多版本并發(fā)控制等。同樣何恶,PostgreSQL也可以用許多方法擴展孽锥,例如通過增加新的數(shù)據(jù)類型、函數(shù)细层、操作符惜辑、聚集函數(shù)、索引方法疫赎、過程語言等盛撑。另外,因為許可證的靈活捧搞,任何人都可以以任何目的免費使用抵卫、修改和分發(fā)PostgreSQL。
在本教程中胎撇,我們將介紹如何在 CentOS 8 服務器上安裝PostgreSQL數(shù)據(jù)庫以及PostgreSQL數(shù)據(jù)庫的基本管理操作介粘。
一、前提條件
01晚树、學習本教程前你需要有一臺自己的安裝有CentOS 8的服務器或者VPS姻采。如果咩有建議可以自己創(chuàng)建一臺虛擬機或者去購買阿里云VPS,騰訊云VPS或者注冊即送$50的Vultr VPS服務器爵憎。
02慨亲、為了能夠安裝軟件包婚瓜,您需要以root用戶或具有sudo特權的用戶身份登錄。
二刑棵、在CentOS 8上安裝PostgreSQL 數(shù)據(jù)庫
在撰寫本文時巴刻,有兩個版本的PostgreSQL服務器可從標準CentOS存儲庫中安裝:版本9.6和10.0。
要列出可用的PostgreSQL模塊流蛉签,請輸入:
dnf module list postgresql
輸出顯示可用的兩個postgresql胡陪。每個個都包含服務器和客戶端。postgresql 10 是默認設置正蛙。
CentOS-8 - AppStream
Name Stream Profiles Summary
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 9.6 client, server [d] PostgreSQL server and client module
01督弓、要安裝默選項的PostgreSQL服務器版本10.0,直接如下安裝命令:
sudo dnf install @postgresql:10
02乒验、要安裝PostgreSQL服務器9.6版愚隧,請輸入:
sudo dnf install @postgresql:9.6
你可能還需要安裝contrib軟件包,該軟件包為PostgreSQL數(shù)據(jù)庫提供了一些附加功能:
sudo dnf install postgresql-contrib
安裝完成后锻全,使用以下命令初始化PostgreSQL數(shù)據(jù)庫:
sudo postgresql-setup initdb
輸出:
Initializing database ... OK
啟動PostgreSQL服務狂塘,并配置為其能夠在系統(tǒng)啟動時啟動:
sudo systemctl enable --now postgresql
使用該psql
工具通過連接到PostgreSQL數(shù)據(jù)庫服務器來驗證安裝并打印其版本:
sudo -u postgres psql -c "SELECT version();"
輸出:
PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit
三、PostgreSQL角色和驗證方法
PostgreSQL使用角色的概念來處理數(shù)據(jù)庫訪問權限鳄厌。角色可以代表一個數(shù)據(jù)庫用戶或一組數(shù)據(jù)庫用戶荞胡。
PostgreSQL支持多種身份驗證方法。最常用的方法是:
- 信任-只要符合定義的條件了嚎,角色就可以不使用密碼進行連接
pg_hba.conf
泪漂。 - 密碼-角色可以通過提供密碼進行連接。密碼可以存儲為
scram-sha-256
歪泳,md5
和password
(明文)萝勤。 - 標識符-僅在TCP/IP連接上受支持。它通過獲取客戶端的操作系統(tǒng)用戶名以及可選的用戶名映射來工作呐伞。
- 對等-與Ident相同敌卓,但僅在本地連接上受支持。
PostgreSQL客戶端身份驗證在名為pg_hba.conf
的配置文件中定義伶氢。默認情況下趟径,對于本地連接,PostgreSQL設置為使用對等身份驗證方法癣防。
在你安裝PostgreSQL服務器過程中postgres
用戶會被自動創(chuàng)建蜗巧。該用戶是PostgreSQL實例的超級用戶,你可以看成等效于MySQL的root用戶劣砍。
要以postgres
用戶身份登錄到PostgreSQL服務器惧蛹,需要首先切換到該用戶,然后運行psql
命令程序訪問PostgreSQL提示符:
sudo su - postgres
psql
從這里刑枝,可以與PostgreSQL實例進行交互香嗓。要退出PostgreSQL shell,請輸入:
\q
還可以訪問PostgreSQL提示符装畅,而無需使用以下sudo
命令切換用戶:
sudo -u postgres psql
通常靠娱,postgres
僅從本地主機使用該用戶。
四掠兄、創(chuàng)建PostgreSQL角色和數(shù)據(jù)庫
只有超級用戶和具有CREATEROLE
特權的角色才能創(chuàng)建新角色像云。
在以下示例中,我們將創(chuàng)建一個名為john
的新角色蚂夕,一個名johndb
為的數(shù)據(jù)庫迅诬,并授予該數(shù)據(jù)庫的特權。
01婿牍、首先侈贷,連接到PostgreSQL shell:
sudo -u postgres psql
02、使用以下命令創(chuàng)建一個新的PostgreSQL角色:
create role John;
03等脂、創(chuàng)建一個新的數(shù)據(jù)庫:
create database johndb;
04俏蛮、通過運行以下查詢,向數(shù)據(jù)庫上的用戶授予特權:
grant all privileges on database johndb to John;
五上遥、啟用對PostgreSQL服務器的遠程訪問
默認情況下搏屑,PostgreSQL服務器僅供本地(127.0.0.1)訪問。
要啟用對PostgreSQL服務器的遠程訪問粉楚,請打開配置文件:
sudo nano /var/lib/pgsql/data/postgresql.conf
在打開文件中找到CONNECTIONS AND AUTHENTICATION
部分辣恋,然后添加/編輯以下行:
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
保存文件,并使用以下命令重新啟動PostgreSQL服務:
sudo systemctl restart postgresql
使用ss
實用程序驗證更改:
ss -nlt | grep 5432
如果已經(jīng)正常啟動模软,會輸出如下內容:
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
上面的輸出顯示PostgreSQL服務器正在所有接口(0.0.0.0)的默認端口上偵聽伟骨。
最后一步是通過編輯/var/lib/pgsql/data/pg_hba.conf
文件將服務器配置為接受遠程連接。
以下是一些顯示不同用例的示例:
# TYPE DATABASE USER ADDRESS METHOD
# The user jane can access all databases from all locations using an md5 password
host all jane 0.0.0.0/0 md5
# The user jane can access only the janedb database from all locations using an 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
六撵摆、寫在最后
本教程講解了如何在CentOS 8 上安裝 PostgreSQL數(shù)據(jù)庫并進行最基礎的管理內容底靠。希望你通過本教程有所收獲。如果你的條件已經(jīng)具備特铝,不妨在自己的CentOS 8服務器上進行安裝嘗試暑中。
更多關于PostgreSQL信息,可以參看PostgreSQL文檔鲫剿。