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
.