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

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

然后解压:
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/ 下载二进制文件. 根据系统选择下载:

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

其实可以直接使用官网文档: https://www.postgresql.org/download/linux/ubuntu/
上面的步骤截图也来自官网.
基本步骤可以总结为:
- 创建仓库配置
- 导入仓库签名的秘钥
- 更新包列表
- 安装
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 命令.

可以通过查看
/etc/shadow文件, 可以看到postgres无密码散列值, 即处于锁定状态.
另外, 查看后台命令, 可以看到数据库所在目录, 以及数据目录的位置
ps -ef | grep postgres

其中
-D用于指定数据目录的位置, 而前面则是命令所谓位置, 即安装目录.-c指定配置文件.
二进制安装, 数据库程序会安装到: /usr/lib/postgresql/<版本号> 目录下

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