域名 AXUM.RS 将于2025年10月到期。我们无意再对其进行续费,我们希望你能够接续这个域名,让更多 AXUM 开发者继续受益。
  • 方案1️⃣AXUM.RS 域名 = 3000
  • 方案2️⃣方案1️⃣ + 本站所有专题原始 Markdown 文档 = 5000
  • 方案3️⃣方案2️⃣ + 本站原始数据库 = 5500
如果你有意接续这份 AXUM 情怀,请与我们取得联系。
说明:
  1. 如果有人购买 AXUM.RS 域名(方案1️⃣),或者该域名到期,本站将启用新的免费域名继续提供服务。
  2. 如果有人购买了 AXUM.RS 域名,且同时购买了内容和/或数据库(方案2️⃣/方案3️⃣),本站将关闭。届时我们或许会以另一种方式与你再相遇。

安装 PostgreSQL

安装

docker 安装无疑是最简单、最方便的安装方式:

docker run --name axum_rs_postgres -e POSTGRES_PASSWORD=axum_rs -p 5432:5432 -d postgres
  • --name :取个名字吧,别到时候自己都不知道这是什么
  • -e POSTGRES_PASSWORD=axum_rs:设置环境变量 POSTGRES_PASSWORD,它将是超级管理员的密码(PostgreSQL的超级管理员的用户名是 postgres
  • -p 5432:5432:端口映射。PostgreSQL 默认端口是 5432

对于本地开发来说,上述 docker 命令已经足矣。但是,如你所知,站长是个负责任的站长,往往会告诉你如何尽可能的“压榨”各工具,让其能尽可能地以最优的状态来服务:

docker run \
        --name axum_rs_postgres \
        -e POSTGRES_PASSWORD=axum_rs \
        -e POSTGRES_USER=axum_rs \
        -e POSTGRES_DB=axum_rs \
        -e TZ=PRC \
        --restart=always \
        -e PGDATA=/var/lib/postgresql/data/pgdata \
        -v /var/docker/axum_rs_postgres:/var/lib/postgresql/data \
        -p 127.0.0.1:5432:5432 \
        -d postgres:alpine

多了几个选项,我们来看一下:

连接

直接使用 docker

你可以使用 docker 来连接:

docker exec -it axum_rs_postgres psql -U axum_rs
  • docker exec:docker 提供的命令,用于执行容器内部的命令
  • -it:开启交互式终端
  • axum_rs_postgres:容器实例的名字
  • psql:PostgreSQL 的命令行工具
  • -U axum_rs:指定 执行psql 的用户名
  • 如未指定 -U axum_rs,将使用默认用户名。PostgreSQL 的用户有两种
    • 一是和 Linux 当前用户名相同的用户,docker 中默认用户名是 root
    • PostgreSQL 的超级管理员的用户名是 postgres,有些 Linux 发行版会将 Linux 的 root 用户和 PostgreSQL 的 postgres 进行映射;有些则不会
    • 另一种是通过 SQL 语句创建的用户,我们将在后续章节进行讲解。本例中的 axum_rs 正是通过 SQL 语句创建——我们在 docker run 时,通过 POSTGRES_USER 指定的,这是自动创建的,不需要手动创建
  • 我们相当于在本地运行 psql,所以大部分情况下,不需要输入密码
    • 这不是 PostgreSQL 的默认特性,而是 docker 镜像帮我们做的
    • 有关用户和角色,我们将在后续章节介绍
  • 一是和 Linux 当前用户名相同的用户,docker 中默认用户名是 root
  • PostgreSQL 的超级管理员的用户名是 postgres,有些 Linux 发行版会将 Linux 的 root 用户和 PostgreSQL 的 postgres 进行映射;有些则不会
  • 另一种是通过 SQL 语句创建的用户,我们将在后续章节进行讲解。本例中的 axum_rs 正是通过 SQL 语句创建——我们在 docker run 时,通过 POSTGRES_USER 指定的,这是自动创建的,不需要手动创建
  • 这不是 PostgreSQL 的默认特性,而是 docker 镜像帮我们做的
  • 有关用户和角色,我们将在后续章节介绍

运行 \d 可以查看当前数据库的对象:

axum_rs=# \d
Did not find any relations.

如果你看到类似上面的输出,说明你的 docker PostgreSQL 已经成功运行。此时,你可以输入 \q 退出。

如果你是使用简单的 docker run --name axum_rs_postgres -e POSTGRES_PASSWORD=axum_rs -p 5432:5432 -d postgres 来创建容器实例,那么,你应该使用如下命令进行连接:

docker exec -it axum_rs_postgres psql -U postgres

嗯,就这么简单。

你甚至可以:

docker exec -it axum_rs_postgres psql

正如上文所说,如果没有指定 -U 用户名,psql 将使用默认的用户,即超级管理员 postgres。这取决于 docker 镜像是否将 postgres 和 Linux 的 root 作映射。所以,始终带上 -U 用户名 是最佳实践。

如果你是使用简单的 docker run --name axum_rs_postgres -e POSTGRES_PASSWORD=axum_rs -p 5432:5432 -d postgres 来创建容器实例,那么,你应该使用如下命令进行连接:

docker exec -it axum_rs_postgres psql -U postgres

嗯,就这么简单。

docker exec -it axum_rs_postgres psql

正如上文所说,如果没有指定 -U 用户名,psql 将使用默认的用户,即超级管理员 postgres。这取决于 docker 镜像是否将 postgres 和 Linux 的 root 作映射。所以,始终带上 -U 用户名 是最佳实践。

使用 GUI 工具连接

当然你完全不必用这么原始的方式连接 PostgreSQL,官方推荐的PgAdmin是一个由 Python 和 Flask 开发的、开源的、Web 形式的 GUI工具(它也有 docker 版本,你可以自己去试试)。

这边推荐DBeaver Community,它是一个跨平台(基于Java)的、支持多种数据库的 GUI 工具。

其它安装方式

在线免费实例

ElephantSQL 提供了免费的 PostgreSQL 实例,对于普通开发以及学习来说足够了,重点是,它提供了香港节点,对于国内用户来说,连接香港节点可能会比较快。

你可以使用 DBeaver 来连接 ElephantSQL 的免费实例

你可以使用 DBeaver 来连接 ElephantSQL 的免费实例

二进制安装

要查看完整内容,请先登录