如何在 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 的官方网站上有一个可用的教程。