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 postgresql或dnf 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 开始,一步步深入数据库的世界。