如何在 Ubuntu、CentOS 和 Windows 上安裝 PostgreSQL?

已發表: 2021-06-08

PostgreSQL 是流行的、跨平台的、開源的對象關係數據庫系統之一,它健壯、高性能、可靠,擁有強大的社區。

它可以追溯到 1986 年作為加州大學伯克利分校 POSTGRES 項目的一部分,並在其核心平台上進行了 30 年的積極開發。 多年來,其一致的性能證明了其完整性、架構​​和企業使用的可擴展性。 它符合 ACID,並支持強大的插件,如流行的 PostGIS 地理空間數據庫擴展器。

我們將在本文中介紹常見平台上 PostgreSQL 的安裝。

讓我們開始吧。

Ubuntu

PostgreSQL 可用於所有風格和版本的 Ubuntu。 您可以選擇安裝和使用您的 Ubuntu 版本默認可用的版本並在其生命週期內得到支持,或者通過添加 PostgreSQL 存儲庫並安裝相同的版本來使用特定版本。 我們將在這裡介紹這兩個選項。

要使用 Ubuntu 存儲庫提供的默認支持版本,請運行:

 $ sudo apt-get update $ sudo apt-get -y install postgresql

PostgreSQL Apt Repository 支持 Ubuntu 當前的 LTS 版本,即20.0418.0416.04 。 雖然它可能不被完全支持,但通過使用最接近的 LTS 版本,相同的包也適用於非 LTS 版本。

要使用PostgreSQL apt 存儲庫,請按照下列步驟操作:

 $ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' $ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - $ sudo apt-get update $ sudo apt-get -y install postgresql

要安裝在PostgreSQL庫的特定版本,而不是僅僅postgresql是指到最新版本,指定它像postgresql-12

 $ sudo apt-get -y install postgresql-12

存儲庫還包含不同的包,包括第三方插件。 例如,PostgreSQL 12 版的常用包包括:

postgresql-client-12 客戶端庫和客戶端二進製文件
postgresql-12 核心數據庫服務器
postgresql-contrib-9.x 額外提供的模塊(版本 10 及更高版本中 postgresql-xx 包的一部分)
libpq-dev C 語言前端開發的庫和頭文件
postgresql-server-dev-12 C 語言後端開發的庫和頭文件
pgadmin4 pgAdmin 4 圖形管理實用程序

安裝完成後,您可以使用以下命令檢查數據庫服務的狀態:

 $ sudo systemctl status postgresql.service

對於 Ubuntu,安裝後,該服務應啟用並運行,如下所示:

 $ sudo systemctl status postgresql.service ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Sun 2021-06-06 16:06:45 UTC; 46s ago Main PID: 3364 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 1113) Memory: 0B CGroup: /system.slice/postgresql.service Jun 06 16:06:45 ubuntu20cloud systemd[1]: Starting PostgreSQL RDBMS... Jun 06 16:06:45 ubuntu20cloud systemd[1]: Finished PostgreSQL RDBMS. $

CentOS

與 Ubuntu 一樣,RHEL/CentOS 存儲庫也包含特定版本的 PostgreSQL,該版本在操作系統的整個生命週期內都得到支持。 您可以使用以下方法安裝相同的內容:

 $ sudo yum install -y postgresql-server

或者如果使用 CentOS 8,您可以使用 DNF。

 $ sudo dnf install -y postgresql-server

在安裝後運行以下命令來初始化數據庫,啟用 PostgreSQL 服務,並啟動它:

 $ sudo postgresql-setup initdb $ sudo systemctl enable postgresql.service $ sudo systemctl start postgresql.service

或者要直接從PostgreSQL yum repositories使用包,我們必須將存儲庫添加為:

 $ sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

然後要安裝特定版本的 PostgreSQL,例如 13 版,這是撰寫本文時的最新穩定版本,請使用:

 $ sudo yum install -y postgresql13-server

yum 存儲庫還包含 PostgreSQL 的其他包,其中一些重要的包在下面列出:

postgresql 客戶端庫和客戶端二進製文件
postgresql 服務器核心數據庫服務器
postgresql-貢獻額外提供的模塊
postgresql 開發C 語言開發的庫和頭文件

安裝後運行以下步驟以初始化數據庫,啟用 PostgreSQL 服務,並啟動它:

 $ sudo /usr/pgsql-13/bin/postgresql-13-setup initdb $ sudo systemctl enable postgresql-13 $ sudo systemctl start postgresql-13

您可以使用以下命令檢查數據庫服務的狀態:

 $ sudo systemctl status postgresql.service ● postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2021-06-06 16:39:35 GMT; 1min 12s ago Process: 7011 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS) Process: 7005 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) CGroup: /system.slice/postgresql.service ├─7014 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432 ├─7015 postgres: logger process ├─7017 postgres: checkpointer process ├─7018 postgres: writer process ├─7019 postgres: wal writer process ├─7020 postgres: autovacuum launcher process └─7021 postgres: stats collector process Jun 06 16:39:34 centos7cloud systemd[1]: Starting PostgreSQL database server... Jun 06 16:39:35 centos7cloud systemd[1]: Started PostgreSQL database server. $

視窗

Windows 32 位和 64 位安裝程序可從此處的官方 PostgreSQL 站點獲得。

  • 您可以根據所需的版本和架構下載適用的二進製文件。

postgresql-下載

  • 我們將下載可用的最新版本,即適用於 Windows 64 位平台的 v13.3。 下載完成後,雙擊啟動安裝程序。

postgresql 安裝啟動

  • 單擊下一步繼續。

postgresql 安裝位置

  • 單擊下一步繼續使用默認路徑或指定您的自定義安裝路徑。

  • 您可以保持選擇默認組件,然後單擊下一步繼續。

postgresql-安裝-數據目錄

  • 接下來,它會詢問數據目錄位置; 這可以保留為默認值,除非您為其分配了單獨的專用磁盤或目錄。 單擊下一步繼續。

postgresql 安裝密碼

  • 指定將分配給postgres用戶的強密碼。 完成後單擊下一步。

postgresql 安裝端口

  • 默認端口5432應該適用於大多數情況。 單擊下一步轉到下一頁。

postgresql 安裝語言環境

  • 選擇數據庫的語言環境,然後單擊下一步繼續。

postgresql 安裝確認

  • 將列出安裝嚮導的所有選定設置,供您查看和確認。 如果需要更改任何內容,請返回並更改相同內容或單擊“下一步”進入下一頁。

postgresql-install-confirmation-1

  • 安裝程序將顯示它已準備好繼續安裝。 準備好後,單擊下一步開始安裝。

postgresql 安裝進度

  • 等待安裝完成。 將顯示相同的確認。

postgresql 安裝完成

  • 完成後,您可以取消選中Stack Builder並單擊完成退出安裝嚮導。 單擊開始菜單並蒐索SQL Shell (psql)並單擊其圖標以打開psql shell。

psql-開始菜單

  • SQL Shell (psql)打開,您可以在指定連接詳細信息後與 PostgreSQL 實例進行交互。 除了密碼之外的所有項目都可以通過簡單地按Enter選擇為默認值,您需要在安裝嚮導期間輸入為postgres用戶指定的密碼。 這將使您進入postgres=#提示符。

psql-sql-shell-windows

連接到 PostgreSQL

安裝後會自動創建postgres用戶,該用戶具有對數據庫實例的superadmin訪問權限。 在 Linux 上,作為特權用戶,您可以切換到此帳戶:

 $ sudo su - postgres

進入後,我們可以將postgres用戶密碼重置為:

 $ psql -c "alter user postgres with password '[email protected]'"

然後使用psql啟動 PostgreSQL 提示符:

 $ psql

這將使您進入 PostgreSQL 提示符:

 $ psql psql (12.7 (Ubuntu 12.7-0ubuntu0.20.04.1)) Type "help" for help. postgres=#

在此提示下,您可以與數據庫交互並執行數據庫管理員或用戶任務。 作為演示,以下步驟創建一個數據庫和一個用戶,然後為新用戶分配權限以在新數據庫上工作:

 postgres=# CREATE DATABASE geekflaredb; CREATE DATABASE postgres=# CREATE USER geekuser WITH ENCRYPTED PASSWORD '[email protected]'; CREATE ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE geekflaredb to geekuser; GRANT postgres=#

然後我們可以使用\l命令列出數據庫:

 postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -------------+----------+----------+---------+---------+----------------------- geekflaredb | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =Tc/postgres + | | | | | postgres=CTc/postgres+ | | | | | geekuser=CTc/postgres postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows) postgres=#

現在您可以使用以下命令簡單地連接到數據庫:

 postgres=# \c geekflaredb You are now connected to database "geekflaredb" as user "postgres". geekflaredb=#

概括

PostgreSQL 因其健壯性、功能集和可擴展性而成為企業界廣泛採用的數據庫之一。 它易於學習並嘗試與 SQL 標準兼容。

在 PostgreSQL 的官方網站上有一個可用的教程。