PostgreSQL 01 - 安装
PostgreSQL: The World's Most Advanced Open Source Relational Database.
安装
Fedora 上安装 PG 很简单,且版本较新:
sudo dnf install postgresql-server postgresql-contrib
这会安装 PG 服务端,客户端以及一些插件和工具。
让 PG 可以开机启动:
sudo systemctl enable postgresql
在第一次启动之前,需要生成一些必备的配置和数据文件:
sudo postgresql-setup --initdb --unit postgresql
启动 PG:
sudo systemctl start postgresql
官方文档:PostgreSQL。
初始化
下面的初始化流程总结自 PG 官方文档。
- 创建 PG 系统用户
PG 建议在系统中创建一个单独的用户 (如postgres
) 来运行 PG 服务器。实际上,使用包管理器 (dnf
) 安装 PG 时,会自动创建 postgres 这个系统用户。
- 创建数据库集群
在执行任何操作之前,必须在磁盘上初始化数据库存储区域 (数据库集群
)。数据库集群是单个正在运行的数据库服务器实例管理的数据库集合。初始化后,数据库集群将包含一个名为postgres
的数据库,数据库服务器本身不要求存在postgres
数据库,但许多外部程序假定它存在。在初始化期间,每个集群中还会创建另外两个数据库,分别名为 template1
和 template0
。顾名思义,这些数据库将用作随后创建的数据库的模板 (不应将它们用于实际工作)。
在文件系统术语中,数据库集群是一个存储所有数据的单个目录 (数据目录或数据区域)。这个目录的位置是用户自定义的,常见的两个位置是:/usr/local/pgsql/data
和/var/lib/pgsql/data
。在启动数据库前,必须初始化数据目录。
在登录到 PostgreSQL 系统账户后执行以下命令:
pg_ctl initdb -D /var/lib/pgsql/data
或者:
initdb -D /var/lib/pgsql/data
其中,-D
选项指定要初始化的数据目录。
PG 建议使用包管理器提供的脚本来初始化数据存储区域,即:
sudo postgresql-setup --initdb --unit postgresql
- 启动数据库服务器
手动启动服务器的基本方法是直接调用postgres
程序,使用-D
选项指定数据目录的位置。在登录到 PostgreSQL 系统帐户后执行以下命令:
postgres -D /var/lib/pgsql/data
这将使服务器在前台运行。如果没有-D
,服务器将尝试使用环境变量PGDATA
指定的数据目录。
在后台启动服务器的方法很多:
postgres -D /var/lib/pgsql/data &
或者:
pg_ctl start -D /var/lib/pgsql/data
PG 推荐使用包管理器提供的启动任务:
sudo systemctl start postgresql
- 停止数据库
停止数据库的命令如下:
pg_ctl stop -D /var/lib/pgsql/data [-m SHUTDOWN-MODE]
可选项-m
用于指定停止数据库的方法,有三种模式:smart
,fast
和immediate
。
- smart:等所有连接中止后,关闭数据库。如果客户端连接不终止,则无法关闭数据库。
- fast:快速关闭数据库,断开客户端的连接,让已有的事务回滚,然后正常关闭数据库。
- immediate:立即关闭数据库,相当于数据库进程立即停止,直接退出,下次启动数据库需要进行恢复。
其他工具
管理 PostgreSQL 的工具有很多,下面列举几个常用的:
- psql
PG 自带的命令行工具。
- pgcli
psql 的替代,支持语法高亮,补全和纠错。
sudo dnf in pgcli python3-keyrings-alt
PG 官方维护的功能强大的跨平台 GUI 程序。
- DBeaver
免费的多功能数据库管理 GUI 程序,支持 PG。
flatpak install flathub io.dbeaver.DBeaverCommunity
免费的 PG 数据库建模工具,也支持管理 PG 数据库。