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

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存储库支持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图形管理实用程序

安装完成后,可以使用以下命令检查DB服务的状态:

$ sudo systemctl status postgresql.service

对于Ubuntu,在安装后,服务应该已启用并正在运行,如:

$ sudo systemctl status postgresql.service
● postgresql.service - PostgreSQL关系型数据库管理系统
     已加载: 已加载 (/lib/systemd/system/postgresql.service; 已启用; 厂商预设值: 已启用)
     活动状态: 活动(已退出)自 2021-06-06 16:06:45 UTC; 46s 前
   主 PID: 3364 (代码=已退出, 状态=0/成功)
      任务: 0 (限制: 1113)
     内存: 0B
     CGroup: /system.slice/postgresql.service

6月 06 16:06:45 ubuntu20cloud systemd[1]: 正在启动 PostgreSQL关系型数据库管理系统...
6月 06 16:06:45 ubuntu20cloud systemd[1]: 已完成 PostgreSQL关系型数据库管理系统的设置。
$

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仓库 使用软件包,我们需要添加以下仓库:

$ 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-client 库和客户端二进制文件
postgresql-server 核心数据库服务器
postgresql-contrib 附加的供应模块
postgresql-devel 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数据库服务器
   已加载: 已加载 (/usr/lib/systemd/system/postgresql.service; 已启用; 厂商预设值: 已禁用)
   活动状态: 活动(运行中)自 2021-06-06 16:39:35 GMT; 1 分钟 12 秒前
  进程: 7011 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (代码=已退出, 状态=0/成功)
  进程: 7005 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (代码=已退出, 状态=0/成功)
   CGroup: /system.slice/postgresql.service
           ├─7014 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
           ├─7015 postgres: logger 进程
           ├─7017 postgres: checkpointer 进程
           ├─7018 postgres: writer 进程
           ├─7019 postgres: wal writer 进程
           ├─7020 postgres: autovacuum launcher 进程
           └─7021 postgres: stats collector 进程

6月 06 16:39:34 centos7cloud systemd[1]: 正在启动 PostgreSQL数据库服务器...
6月 06 16:39:35 centos7cloud systemd[1]: 已启动 PostgreSQL数据库服务器。
$

Windows

Windows 32位和64位的安装程序可以从官方的PostgreSQL网站 here 下载。

  • 您可以根据所需的版本和体系结构下载适用的二进制文件。

  • 我们将下载最新版本,即Windows 64位平台的v13.3。下载完成后,双击启动安装程序。

  • 点击“下一步”继续。

  • 点击“下一步”继续使用默认路径,或者指定自定义安装路径。

  • 您可以保留默认组件的选择,然后点击“下一步”继续。

  • 接下来,它要求指定数据目录位置;除非您有单独的专用磁盘或目录分配给它,否则可以保留默认值。点击“下一步”继续。

  • 设置一个强密码给postgres用户。完成后点击“下一步”。

  • 默认端口5432对于大多数情况都可以使用。点击“下一步”进入下一页。

  • 选择数据库的语言环境,然后点击“下一步”继续。

  • 安装向导的所有选定设置将列出供您查看和确认。如果需要更改任何内容,请返回更改,或者点击“下一步”继续到下一页。

  • 安装准备就绪后,点击“下一步”开始安装。

  • 等待安装完成。将显示确认信息。

  • 安装完成后,您可以取消选中Stack Builder,然后点击“完成”退出安装向导。点击开始菜单,搜索SQL Shell (psql),并点击其图标打开psql shell。

  • SQL Shell (psql)会打开,您可以与您的PostgreSQL instance after specifying the connection details互动。除了密码,您可以通过按下Enter选择所有项目的默认值,密码需要输入在安装向导期间为postgres用户指定的密码。这将使您进入postgres=#提示符。

连接到PostgreSQL

安装后会自动创建一个postgres用户,该用户具有对DB实例的superadmin访问权限。在Linux上,作为特权用户,您可以切换到此帐户,如下所示:

$ sudo su - postgres

进入后,我们可以重置postgres用户密码,如下所示:

$ psql -c "alter user postgres with password 'P@SsW0rdH3r3'"

然后使用psql启动PostgreSQL提示符,如下所示:

$ psql

这将使您进入PostgreSQL提示符:

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

postgres=#

在此提示符下,您可以与数据库互动并进行DB管理或用户任务。作为演示,以下步骤创建了一个DB和一个用户,并为新用户分配了对新数据库的权限:

postgres=# CREATE DATABASE yaoweibindb;
CREATE DATABASE
postgres=# CREATE USER geekuser WITH ENCRYPTED PASSWORD 'N3wP@33w0rD';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE yaoweibindb to geekuser;
GRANT
postgres=#

我们可以使用l命令列出DB:

postgres=# l
                               数据库列表
    名称       |  所有者    | 编码  | 校对   |  类型  |   访问权限
-------------+----------+----------+---------+---------+-----------------------
 yaoweibindb | 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 行)

postgres=#

现在你可以简单地使用以下命令连接到数据库:

postgres=# c yaoweibindb
现在作为用户"postgres"连接到数据库"yaoweibindb"。
yaoweibindb=#

摘要

由于其强大的功能、特性和可扩展性,PostgreSQL是企业界广泛采用的数据库之一。它易于学习,并且尽力与SQL标准兼容。

PostgreSQL的官方网站上提供了一个链接。

类似文章