jk's notes
  • ch02 获得 PostgreSQL

ch02 获得 PostgreSQL

简介

有两种常用的安装方法:

  • 从源码编译
  • 安装二进制发行版

本章结构

  • 源码安装
  • 安装过程
  • 初始化 PostgreSQL
  • 二进制安装

目标

你会学到在现代 Linux OS 中安装 PostgreSQL 的办法. 你会获得完成安装的命令. 最后, 你会知道如何启动与准备 PostgreSQL.

源码安装

官方文档中也有相关步骤, 不过还是按照书中的描述进行整理.

源码安装的简略版本

相当于与个小结

./Configuration
make
su
make install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

从代码到可执行程序的转变过程称为编译. 它被定义为 5 个步骤, 分别是: 预处理, 转换, 翻译, 汇编, 链接. 现代 Linux 系统中, 这些步骤通过 make 来执行, 而 make 由 ./configure 命令来生成.

准备

实例: 在 Ubuntu 中安装 PostgreSQL 14.5

在开始之前, 先更新系统仓库, 然后重启. 可以使用下面命令:

sudo apt update && apt upgrade -y
reboot

建议还是使用 apt-get

然后安装下面的包, 否则在安装 PostgreSQL 过程中会出现问题.

sudo apt install build-essential zlib1g-dev libreadline-dev -y

下载源码

使用 wget 命令在 PostgreSQL 的 ftp 服务器上下载源代码

wget https://ftp.postgresql.org/pub/source/v14.5/postgresql-14.5.tar.gz

1

浏览器中 ftp 服务器看起来如下:

2

然后解压:

tar xvfz postgresql-14.5.tar.gz

可以不带 v 命令, 可以安静解压.

  • x 表示解压, 其他参数还有 c 创建, r 添加或替换, t 列表展示, u 更新
  • v 表示显示详细过程
  • f 用于指定文件
  • z 表示 gzip 格式

进入解压目录, 应该可以看到 configure 可执行文件 (ls 显示颜色高亮)

安装过程

下载源码后即可开始安装.

使用下面命令来执行当前系统配置:

./configure

该命令执行完毕, 会获得 Makefile 文件, 如果配置出现问题, 不会生成该文件.

构建执行 make 命令:

make

该命令就是在进行编译, 链接, 以及测试等一些列操作.

构建完毕后执行 make install 来安装. 即加入系统环境变量中.

make install

验证文件夹结构

至此, 可以验证上述步骤中对应的文件与文件是否被创建.

cd /usr/local/pgsql
ls -la

应该会看到 bin, include, lib, share 等目录.

添加 postgres 用户

通常不会使用 root 账户来运行 PostgreSQL, 而是使用 postgres 用户. 因此添加该用户

adduser postgres

此时会自动创建用户, 组, 以及对应的目录等.

创建数据目录

在完成安装, 并已创建 postgres 用户后, 就可开始创建专门用于存储数据的目录了. 将其称为 Data Directory. 使用管理员角色执行下面命令将其所有者设置为 postgres:

mkdir /usr/local/pgsql/data
chown postgres:postgres /usr/local/pgsql/data

然后查看 ls -ld /usr/local/pgsql/data

即可看到该目录属于 postgres.

初始化 PostgreSQL

下面开始初始化 数据库集群系统 (database cluster system). 该过程仅仅会创建所需要的文件与目录. 使用下面命令:

su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

验证数据目录

如果 initdb 成功, 执行下面命令查看文件夹.

ls -lrth /usr/local/pgsql/data

启动 PostgreSQL 数据库

下面的命令会启动一个新的数据库集群 (new database cluster), 申请所需的内存池, 创建后台进程:

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

验证 postrges 进程正在运行中

通过搜索后台进程来确保 PostgreSQL 已启动运行. 执行:

ps -ef | grep postgres

登录数据库, 使用命令 /usr/local/pgsql/bin/psql:

/usr/local/pgsql/bin/psql

然后会进入交互式命令行环境

创建测试数据库

/usr/local/pgsql/bin/psql test

执行命令 \l+ 来查看所有数据库

二进制安装

可以在 https://www.postgresql.org/download/ 下载二进制文件. 根据系统选择下载:

Figure_2.4

选择 Ubuntu, 然后执行下面的步骤:

Figure_2.5

其实可以直接使用官网文档: https://www.postgresql.org/download/linux/ubuntu/

上面的步骤截图也来自官网.

基本步骤可以总结为:

  1. 创建仓库配置
  2. 导入仓库签名的秘钥
  3. 更新包列表
  4. 安装
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 install postgresql

其他略.

一个补充

在添加仓库配置, 更新源等操作后, 作者给出了一个搜索应用的命令:

sudo apt-cache search --names-only 'postgresql-[0-9\.*]{2,3}$'

这样会列出可用的应用. 然后使用 sudo apt install ... 来安装即可.

安装后也会初始化数据库集群, Ubuntu 会提供一个命令 pg_lsclusters, 可以查看初始化集群以及其状态.

另一个补充

这里使用官网的步骤安装:

sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
sudo apt install -y postgresql-14

使用二进制安装后, 也会默认创建 postgres 用户, 但是默认不可用. 使用命令

sudo passwd postgres

来初始化密码. 然后切换到 postgres 用户, 执行 PostgreSQL 命令.

image-20240625183217902

可以通过查看 /etc/shadow 文件, 可以看到 postgres 无密码散列值, 即处于锁定状态.

另外, 查看后台命令, 可以看到数据库所在目录, 以及数据目录的位置

ps -ef | grep postgres

image-20240625184028355

其中 -D 用于指定数据目录的位置, 而前面则是命令所谓位置, 即安装目录. -c 指定配置文件.

二进制安装, 数据库程序会安装到: /usr/lib/postgresql/<版本号> 目录下

image-20240625183024600

数据目录 (Data Directory) 在 /var/lib/postgresql/<版本号>/main.

image-20240625184342649

Last Updated:
Contributors: jk