如何在Debian 9上安裝PostgreSQL

PostgreSQL,通常簡稱為Postgres,是一種開放源代碼的通用對象關係數據庫管理系統。 PostgreSQL具有許多高級功能,例如在線備份,時間點恢復,嵌套事務,SQL和JSON查詢,多版本並發控制(MVCC),異步複製等。

在本教程中,我們將向您展示如何在Debian 9上安裝PostgreSQL並探索基本數據庫管理的基礎。

先決條件

在繼續本教程之前,請確保您以sudo特權登錄的用戶。

安裝PostgreSQL#

在撰寫本文時,可從Debian存儲庫中獲得的PostgreSQL的最新版本是PostgreSQL 9.6。

要在Debian服務器上安裝PostgreSQL,請完成以下步驟:

  1. 首先更新本地包索引:

    sudo apt update
  2. 安裝PostgreSQL服務器和PostgreSQL contrib軟件包,該軟件包為PostgreSQL數據庫提供附加功能:

    sudo apt install postgresql postgresql-contrib
  3. 安裝完成後,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 md5password (明文)
  • 標識-僅在TCP / IP連接上支持此方法。 通過獲取客戶端的操作系統用戶名以及可選的用戶名映射來工作。
  • 對等-與Ident相同,但僅在本地連接上受支持。

PostgreSQL客戶端身份驗證在名為的配置文件中定義 pg_hba.conf。 默認情況下,對於本地連接,PostgreSQL設置為使用對等身份驗證方法。

postgres 用戶在安裝PostgreSQL時自動創建。 該用戶是PostgreSQL實例的超級用戶,它等效於MySQL根用戶。

要首先以postgres用戶身份登錄PostgreSQL服務器,您需要切換到用戶postgres,然後您可以使用來訪問PostgreSQL提示符。 psql 效用:

sudo su - postgrespsql

從這裡,您可以與PostgreSQL實例進行交互。 要退出PostgreSQL shell,請輸入:

q

您可以使用 sudo 命令以訪問PostgreSQL提示符而無需切換用戶:

sudo -u postgres psql

postgres 通常僅從本地主機使用該用戶,建議不要為此用戶設置密碼。

創建PostgreSQL角色和數據庫

您可以使用以下命令從命令行創建新角色 createuser 命令。 只有超級用戶和角色 CREATEROLE 特權可以創建新角色。

在下面的示例中,我們將創建一個名為 john 一個名為 johndb 並授予數據庫特權。

  1. 創建一個新的PostgreSQL角色

    以下命令將創建一個名為john的新角色:

    sudo su - postgres -c "createuser john"
  2. 創建一個新的PostgreSQL數據庫

    使用以下命令創建一個新的名為johndb的數據庫 createdb 命令:

    sudo su - postgres -c "createdb johndb"
  3. 授予特權

    授予權限 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數據庫

Sidebar