如何在CentOS 7上安裝PostgreSQL

PostgreSQL或Postgres是一個開放源代碼的通用對象關係數據庫管理系統,具有許多高級功能,使您可以創建複雜的Web應用程序。

在本教程中,我們將向您展示兩種不同的方法,說明如何在CentOS 7計算機上安裝PostgreSQL。 第一種方法將引導您完成從CentOS信息庫安裝PostgreSQL v9.2.23的必要步驟,而第二種方法將向您展示如何從官方PostgreSQL信息庫安裝最新版本的PostgreSQL。

如果您的應用程序不需要最新版本,我們建議使用第一種方法並從CentOS存儲庫中安裝PostgreSQL。

我們還將探討PostgreSQL數據庫管理的基礎。

先決條件

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

從CentOS儲存庫安裝PostgreSQL#

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

要在CentOS服務器上安裝PostgreSQL,請執行以下步驟:

  1. 安裝PostgreSQL

    要安裝PostgreSQL服務器以及PostgreSQL contrib軟件包,該軟件包為PostgreSQL數據庫提供了幾個附加功能,只需鍵入:

    sudo yum install postgresql-server postgresql-contrib
  2. 初始化數據庫

    使用以下命令初始化PostgreSQL數據庫:

    sudo postgresql-setup initdb
    Initializing database ... OK
  3. 啟動PostgreSQL

    要啟動PostgreSQL服務並使它能夠在啟動時啟動,只需鍵入:

    sudo systemctl start postgresqlsudo systemctl enable postgresql
  4. 驗證PostgreSQL安裝

    為了驗證安裝,我們將嘗試使用來連接到PostgreSQL數據庫服務器。 psql 工具並打印服務器版本:

    sudo -u postgres psql -c "SELECT version();"
    PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
    (1 row)

Psql是一個交互式命令行實用程序,可讓我們與PostgreSQL服務器進行交互。

從PostgreSQL存儲庫安裝PostgreSQL#

在撰寫本文時,可從官方PostgreSQL存儲庫中獲得的PostgreSQL的最新版本是PostgreSQL版本10.4。 在繼續下一步之前,您應該訪問PostgreSQL Yum Repository頁面,並檢查是否有可用的新版本。

請按照以下步驟在CentOS服務器上安裝最新的PostgreSQL版本:

  1. 啟用PostgreSQL倉庫

    要啟用PostgreSQL存儲庫,只需安裝存儲庫 rpm 文件:

    sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
  2. 安裝PostgreSQL

    啟用存儲庫後,請使用以下命令安裝PostgreSQL服務器和PostgreSQL contrib軟件包:

    sudo yum install postgresql10-server postgresql10-contrib
  3. 初始化數據庫

    要初始化PostgreSQL數據庫類型:

    sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
    Initializing database ... OK
  4. 啟動PostgreSQL

    要啟動PostgreSQL服務並使它能夠在啟動時啟動:

    sudo systemctl start postgresql-10sudo systemctl enable postgresql-10
  5. 驗證PostgreSQL安裝

    為了驗證安裝,我們將嘗試使用來連接到PostgreSQL數據庫服務器。 psql 工具並打印服務器版本:

    sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
    PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
    (1 row)

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

您也可以訪問PostgreSQL提示符,而無需使用 sudo 命令:

sudo -u postgres psql

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

如果您是從官方PostgreSQL存儲庫安裝的PostgreSQL版本10,則需要使用完整路徑到 psql 二進制是 /usr/pgsql-10/bin/psql

創建PostgreSQL角色和數據庫

只有超級用戶和角色 CREATEROLE 特權可以創建新角色。

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

  1. 連接到PostgreSQL Shell

    sudo -u postgres psql
  2. 創建一個新的PostgreSQL角色

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

    create role john;
  3. 創建一個新的PostgreSQL數據庫

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

    create database johndb;
  4. 授予特權

    授予權限 john 用戶在上一步中創建的數據庫上運行以下查詢:

    grant all privileges on database johndb to john;

啟用對PostgreSQL服務器的遠程訪問

默認情況下,PostgreSQL服務器僅在本地接口上偵聽 127.0.0.1。 要啟用對PostgreSQL服務器的遠程訪問,請打開配置文件 postgresql.conf 並添加 listen_addresses="*" 在裡面 CONNECTIONS AND AUTHENTICATION 部分。

sudo vim /var/lib/pgsql/data/postgresql.conf

如果您正在運行PostgreSQL版本10,則文件的路徑為 /var/lib/pgsql/10/data/postgresql.conf./var/lib/pgsql/data/postgresql.conf

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses="*"     # what IP address(es) to listen on;

保存文件並使用以下命令重新啟動PostgreSQL服務:

sudo systemctl restart postgresql

如果您正在運行PostgreSQL版本10,請使用以下命令重新啟動PostgreSQL服務: systemctl restart postgresql-10

使用驗證更改 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 文件。

以下是一些顯示不同用例的示例:

/var/lib/pgsql/data/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

如果您正在運行PostgreSQL版本10,則文件的完整路徑為 /var/lib/pgsql/10/data/pg_hba.conf

結論#

您已經了解了如何在CentOS 7服務器上安裝和配置PostgreSQL。

有關該主題的更多信息,請查閱PostgreSQL文檔。

如有任何疑問,請在下面發表評論。

centos postgresql數據庫

Sidebar