本教程适用于以下操作系统版本

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 18.04 (Bionic Beaver)
  • Ubuntu 16.04 (Xenial Xerus)
  • Ubuntu 15.04 (Vivid Vervet)

本页内容

  • 先决条件
  • 入门准备
  • 添加 PostgreSQL 仓库
  • 在 Ubuntu 22.04 上安装 PostgreSQL
  • 配置 PostgreSQL 以允许远程连接
  • 创建管理员用户
  • 在 PostgreSQL 中创建数据库和用户
  • 如何从远程主机连接 PostgreSQL
  • 结论

PostgreSQL 是一个开源且最受欢迎的关系型数据库管理系统之一。它实现了 SQL 查询语言,并提供强大的稳定性、性能与数据完整性。你可以使用 PostgreSQL 数据库来运行关键业务应用。PostgreSQL 具有嵌套事务、多版本并发控制、表继承、异步复制、外键引用完整性等特性。

本文将向你展示如何在 Ubuntu 22.04 上安装 PostgreSQL 数据库。

先决条件

  • 一台运行 Ubuntu 22.04 的服务器。
  • 服务器上已配置 root 密码。

入门准备

首先,使用以下命令将所有系统软件包更新并升级到最新版本:

apt update -y
apt upgrade -y

系统更新完成后,你可以使用以下命令安装其他所需的依赖项:

apt install wget curl gnupg2 -y

安装完所有依赖项后,你可以继续安装 InfluxDB。

添加 PostgreSQL 仓库

默认情况下,Ubuntu 22.04 的默认仓库中没有最新版本的 PostgreSQL。因此你需要将 PostgreSQL 官方仓库添加到你的系统。

你可以使用以下命令添加 PostgreSQL 仓库和 GPG 密钥:

sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null

接下来,使用以下命令更新 PostgreSQL 仓库:

apt update -y

在 Ubuntu 22.04 上安装 PostgreSQL

现在,你可以运行以下命令安装 PostgreSQL 15:

apt install postgresql postgresql-client -y

PostgreSQL 安装完成后,使用以下命令验证 PostgreSQL 的状态:

systemctl status postgresql

你应看到如下输出:

? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-12-05 14:28:18 UTC; 1min 57s ago
   Main PID: 10824 (code=exited, status=0/SUCCESS)
        CPU: 4ms

Dec 05 14:28:18 ubuntu2204 systemd[1]: Starting PostgreSQL RDBMS...
Dec 05 14:28:18 ubuntu2204 systemd[1]: Finished PostgreSQL RDBMS.

要查看 PostgreSQL 版本,请运行以下命令:

sudo -u postgres psql -c "SELECT version();"

你将看到如下输出:

                                                              version                                                              
-----------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 15.1 (Ubuntu 15.1-1.pgdg22.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0, 64-bit
(1 row)

配置 PostgreSQL 以允许远程连接

默认情况下,PostgreSQL 仅允许来自 localhost 的连接。如果你想允许远程连接,则需要编辑 PostgreSQL 配置文件并定义认证方式。你可以通过编辑以下文件来完成:

nano /etc/postgresql/15/main/pg_hba.conf

修改以下行:

local   all             all                                     trust

host    all             all             0.0.0.0/0                md5

完成后保存并关闭文件。然后,编辑 PostgreSQL 主配置文件并修改监听端口:

nano /etc/postgresql/15/main/postgresql.conf

修改以下行:

listen_addresses='*'

保存并关闭文件,然后重启 PostgreSQL 服务以应用更改:

systemctl restart postgresql

创建管理员用户

创建一个管理员用户来管理其他用户和数据库是个好主意。首先,使用以下命令登录 PostgreSQL shell:

sudo -u postgres psql

登录后,你将看到如下 shell:

psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
Type "help" for help.

postgres=# 

接下来,使用以下命令创建一个管理员用户并设置密码:

CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'password';

接下来,使用以下命令验证所创建的用户:

\du

你应看到如下输出:

                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 root      | Superuser, Create role, Create DB                          | {}


在 PostgreSQL 中创建数据库和用户

在本节中,我们将向你展示如何在 PostgreSQL 中创建数据库和用户。

要在 PostgreSQL 中创建一个名为 wpdb 的数据库,请运行以下命令:

create database wpdb;

要在 PostgreSQL 中创建一个名为 wpuser 的用户,请运行以下命令:

create user wpuser with encrypted password 'password';

要向 wpdb 数据库授予所有权限,请运行以下命令:

grant all privileges on database wpdb to wpuser;

你可以使用以下命令列出所有数据库:

\l

你应在以下输出中看到所有数据库的列表:

                                                 List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    | ICU Locale | Locale Provider |   Access privileges   
-----------+----------+----------+-------------+-------------+------------+-----------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =c/postgres          +
           |          |          |             |             |            |                 | postgres=CTc/postgres
 wpdb      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |            | libc            | =Tc/postgres         +
           |          |          |             |             |            |                 | postgres=CTc/postgres+
           |          |          |             |             |            |                 | wpuser=CTc/postgres
(4 rows)

如何从远程主机连接 PostgreSQL

此时,PostgreSQL 已安装并配置为允许来自远程主机的连接。要验证 PostgreSQL 的远程连接,请运行以下命令:

psql 'postgres://wpuser:password@postgres-ip-address:5432/wpdb?sslmode=disable'

结论

恭喜!你已成功在 Ubuntu 22.04 上安装并配置了 PostgreSQL 服务器。现在你可以在生产环境中使用 PostgreSQL 以实现高性能与数据完整性。如有任何疑问,欢迎随时向我提问。