如何在 Ubuntu、CentOS 和 Windows 上安裝 PostgreSQL?
已發表: 2021-06-08PostgreSQL 是流行的、跨平台的、開源的對象關係數據庫系統之一,它健壯、高性能、可靠,擁有強大的社區。
它可以追溯到 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.04 、 18.04和16.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-serveryum 存儲庫還包含 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 站點獲得。
- 您可以根據所需的版本和架構下載適用的二進製文件。


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

- 單擊下一步繼續。

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

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

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

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

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

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

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

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

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

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

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

連接到 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 的官方網站上有一個可用的教程。
