如何在Debian 9上安裝PostgreSQL
PostgreSQL,通常簡稱為Postgres,是一種開放源代碼的通用對象關係數據庫管理系統。 PostgreSQL具有許多高級功能,例如在線備份,時間點恢復,嵌套事務,SQL和JSON查詢,多版本並發控制(MVCC),異步複製等。
在本教程中,我們將向您展示如何在Debian 9上安裝PostgreSQL並探索基本數據庫管理的基礎。
先決條件
在繼續本教程之前,請確保您以sudo特權登錄的用戶。
安裝PostgreSQL#
在撰寫本文時,可從Debian存儲庫中獲得的PostgreSQL的最新版本是PostgreSQL 9.6。
要在Debian服務器上安裝PostgreSQL,請完成以下步驟:
首先更新本地包索引:
sudo apt update
安裝PostgreSQL服務器和PostgreSQL contrib軟件包,該軟件包為PostgreSQL數據庫提供附加功能:
sudo apt install postgresql postgresql-contrib
安裝完成後,PostgreSQL服務將自動啟動。 為了驗證安裝,我們將使用來連接到PostgreSQL數據庫服務器。
psql
實用程序並打印服務器版本:sudo -u postgres psql -c "SELECT version();"
輸出將如下所示:
version ----------------------------------------------------------------------------------------------------------- PostgreSQL 9.6.10 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit (1 row)
Psql是一個交互式終端程序,可讓您與PostgreSQL服務器進行交互。
PostgreSQL角色和身份驗證方法
PostgreSQL使用角色的概念來處理數據庫訪問權限。 角色可以代表一個數據庫用戶或一組數據庫用戶。
PostgreSQL支持多種身份驗證方法。 最常用的方法是:
- 信任-使用此方法,角色可以在沒有密碼的情況下進行連接,只要
pg_hba.conf
被滿足。 - 密碼-角色可以通過提供密碼進行連接。 密碼可以存儲為
scram-sha-256
md5
和password
(明文) - 標識-僅在TCP / IP連接上支持此方法。 通過獲取客戶端的操作系統用戶名以及可選的用戶名映射來工作。
- 對等-與Ident相同,但僅在本地連接上受支持。
PostgreSQL客戶端身份驗證在名為的配置文件中定義 pg_hba.conf
。 默認情況下,對於本地連接,PostgreSQL設置為使用對等身份驗證方法。
的 postgres
用戶在安裝PostgreSQL時自動創建。 該用戶是PostgreSQL實例的超級用戶,它等效於MySQL根用戶。
要首先以postgres用戶身份登錄PostgreSQL服務器,您需要切換到用戶postgres,然後您可以使用來訪問PostgreSQL提示符。 psql
效用:
sudo su - postgres
psql
從這裡,您可以與PostgreSQL實例進行交互。 要退出PostgreSQL shell,請輸入:
q
您可以使用 sudo
命令以訪問PostgreSQL提示符而無需切換用戶:
sudo -u postgres psql
的 postgres
通常僅從本地主機使用該用戶,建議不要為此用戶設置密碼。
創建PostgreSQL角色和數據庫
您可以使用以下命令從命令行創建新角色 createuser
命令。 只有超級用戶和角色 CREATEROLE
特權可以創建新角色。
在下面的示例中,我們將創建一個名為 john
一個名為 johndb
並授予數據庫特權。
創建一個新的PostgreSQL角色
以下命令將創建一個名為john的新角色:
sudo su - postgres -c "createuser john"
創建一個新的PostgreSQL數據庫
使用以下命令創建一個新的名為johndb的數據庫
createdb
命令:sudo su - postgres -c "createdb johndb"
授予特權
授予權限
john
用戶在上一步中創建的數據庫上,連接到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 vim /etc/postgresql/9.6/main/postgresql.conf
/etc/postgresql/9.6/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
LISTEN 0 128 0.0.0.0:5432 0.0.0.0:*
LISTEN 0 128 [::]:5432 [::]:*
從上面的輸出中可以看到,PostgreSQL服務器正在所有接口(0.0.0.0)上進行偵聽。
最後一步是通過編輯服務器將服務器配置為接受遠程連接 pg_hba.conf
文件。
以下是一些顯示不同用例的示例:
/etc/postgresql/9.6/main/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# The user jane will be able to access all databases from all locations using a md5 password
host all jane 0.0.0.0/0 md5
# The user jane will be able to access only the janedb from all locations using a md5 password
host janedb jane 0.0.0.0/0 md5
# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host all jane 192.168.1.134 trust
結論#
您已經了解了如何在Debian 9服務器上安裝和配置PostgreSQL。 有關此主題的更多信息,請查閱PostgreSQL文檔。
如有任何疑問,請在下面發表評論。
Debian PostgreSQL數據庫