Linux 上安装 PostgreSQL(千字长文)

Linux 上安装 PostgreSQL 的完整指南

你是否正在开发一个需要持久化数据的项目?无论是 Web 应用、后台服务,还是数据分析工具,数据库都是背后默默支撑的关键组件。在众多数据库中,PostgreSQL 以其强大的功能、良好的扩展性以及开源免费的特性,成为许多开发者的首选。

如果你正在使用 Linux 系统,那么在 Linux 上安装 PostgreSQL 就是你迈出的第一步。这篇文章将带你一步步完成安装、配置和基础操作,无论你是编程初学者,还是已有开发经验的中级开发者,都能轻松上手。


选择合适的发行版与安装方式

在 Linux 上安装 PostgreSQL 之前,首先要确认你使用的发行版。常见的发行版如 Ubuntu、Debian、CentOS、Fedora 和 openSUSE 都支持 PostgreSQL,但安装命令略有不同。

PostgreSQL 官方推荐使用系统的包管理器安装,这样可以自动处理依赖关系,避免手动配置的麻烦。以 Ubuntu 22.04 为例,我们可以使用 apt 包管理器来安装。

sudo apt update

sudo apt install -y postgresql-15 postgresql-client-15

注释

  • sudo apt update 用于更新本地软件包索引,避免安装旧版本或缺失依赖。
  • apt install -y 中的 -y 参数表示自动确认所有提示,适合自动化脚本或新手快速安装。
  • 安装的 postgresql-15 是主程序包,postgresql-client-15 提供命令行客户端工具,用于连接数据库。

如果你使用的是 CentOS 或 Rocky Linux,命令会稍有不同:

sudo dnf install -y postgresql15 postgresql15-server postgresql15-client

提示:不同发行版的 PostgreSQL 包名可能不同,例如 Debian 系统中可能是 postgresql-14,请根据实际版本选择。你可以通过 apt-cache search postgresqldnf search postgresql 查看可用版本。


初始化数据库集群与启动服务

安装完成后,PostgreSQL 并不会自动运行。它需要一个“数据库集群”(Database Cluster)来存放数据和配置信息。这个集群就像一个独立的“数据库容器”,每个 PostgreSQL 实例都需要一个。

在 Ubuntu 上,系统会自动执行初始化操作。但为了保险起见,我们可以手动运行初始化命令:

sudo /usr/pgsql-15/bin/postgres --initdb -D /var/lib/postgresql/15/main

注释

  • --initdb 是初始化命令,用于创建数据库集群目录。
  • -D 指定数据目录路径,Linux 上默认位置是 /var/lib/postgresql/15/main
  • 这个命令只需运行一次,后续重启服务时不再需要。

初始化完成后,就可以启动 PostgreSQL 服务了:

sudo systemctl start postgresql-15

sudo systemctl enable postgresql-15

sudo systemctl status postgresql-15

注释

  • systemctl start 启动服务,enable 设置开机启动,避免重启后数据库不自动运行。
  • status 命令会显示服务当前状态,绿色“active (running)”表示运行正常。

配置 PostgreSQL 用户与权限

PostgreSQL 安装完成后,会自动创建一个系统用户 postgres,这是数据库的超级用户,拥有最高权限。我们通常通过这个用户来管理数据库。

sudo -u postgres psql

注释

  • sudo -u postgres 表示以 postgres 用户身份执行后续命令。
  • psql 是 PostgreSQL 的命令行客户端,是与数据库交互的核心工具。

执行后你会看到类似以下的提示符:

psql (15.3)
Type "help" for help.

postgres=#

此时你已进入 PostgreSQL 的交互式命令行环境。接下来我们创建一个自己的数据库用户:

-- 创建一个名为 devuser 的新用户,密码为 mysecretpassword
CREATE USER devuser WITH PASSWORD 'mysecretpassword';

-- 创建一个名为 myapp 的数据库,并指定所有者为 devuser
CREATE DATABASE myapp OWNER devuser;

-- 授予 devuser 对 myapp 数据库的全部权限
GRANT ALL PRIVILEGES ON DATABASE myapp TO devuser;

注释

  • CREATE USER 创建新用户,WITH PASSWORD 设置登录密码。
  • CREATE DATABASE 创建数据库,OWNER 指定该数据库的所有者。
  • GRANT ALL PRIVILEGES 赋予用户对数据库的所有操作权限,包括创建表、插入数据等。
  • 这些操作相当于在数据库中“建房子、分钥匙”,让新用户能自由使用。

远程连接与网络配置(可选但重要)

默认情况下,PostgreSQL 只允许本地连接(localhost),这意味着你只能在本机使用 psql 连接。如果你的项目部署在远程服务器上,或者需要从其他机器访问数据库,就需要配置网络。

打开 PostgreSQL 的主配置文件:

sudo nano /var/lib/postgresql/15/main/postgresql.conf

找到以下两行并修改:

listen_addresses = '*'

max_connections = 100

注释

  • listen_addresses = '*' 表示监听所有网络接口,允许远程连接。
  • 如果你只希望允许特定 IP 访问,可以写成 listen_addresses = '192.168.1.100'

接下来配置客户端认证规则。编辑 pg_hba.conf 文件:

sudo nano /var/lib/postgresql/15/main/pg_hba.conf

在文件末尾添加以下行:

host    myapp    devuser    192.168.1.0/24    md5

注释

  • host 表示 TCP/IP 连接。
  • 第二列是数据库名,devuser 是用户名,192.168.1.0/24 是允许访问的 IP 网段。
  • md5 表示使用密码哈希验证,比明文更安全。

保存文件后,重启 PostgreSQL 服务使配置生效:

sudo systemctl restart postgresql-15

基础操作:创建表与插入数据

现在我们已经完成安装和基本配置,来创建一个简单的用户表并插入一些数据,感受一下 PostgreSQL 的实际使用。

psql 命令行中执行以下 SQL:

-- 使用 myapp 数据库
\c myapp

-- 创建 users 表,包含 id、name 和 email 字段
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL
);

-- 插入两条测试数据
INSERT INTO users (name, email) VALUES 
    ('张三', 'zhangsan@example.com'),
    ('李四', 'lisi@example.com');

-- 查询所有数据
SELECT * FROM users;

注释

  • \c myapp 切换到目标数据库。
  • SERIAL 是自动递增的整数类型,常用于主键。
  • VARCHAR(100) 表示最大长度 100 的字符串。
  • UNIQUE 约束确保 email 不重复,防止重复注册。
  • INSERT INTO 插入数据,SELECT * 查询所有行。

运行后你会看到类似输出:

 id | name |       email        
----+------+--------------------
  1 | 张三 | zhangsan@example.com
  2 | 李四 | lisi@example.com
(2 rows)

总结:Linux 上安装 PostgreSQL 的关键点

通过本文,你已经完成了在 Linux 上安装 PostgreSQL 的全过程:从选择系统、安装包、初始化集群、启动服务,到用户管理、网络配置,再到基础 SQL 操作。整个过程就像搭积木,每一步都稳扎稳打,最终构建出一个可用的数据库系统。

PostgreSQL 不仅功能强大,还非常灵活,支持 JSON、GIS、全文搜索等高级特性,适合未来扩展。掌握它,意味着你拥有了一个可靠的“数据仓库”,为你的项目打下坚实基础。

如果你正在学习后端开发、构建 Web 应用,或者准备进入数据工程领域,那么现在就是开始的好时机。从 Linux 上安装 PostgreSQL 开始,一步步深入数据库的世界。