IWA
2025-09-22
点 赞
0
热 度
9
评 论
0

PostgreSQL 部署教程(面向小白)

一、简介

PostgreSQL(简称 PG)是功能强大的开源关系型数据库,常被称为 "世界上最先进的开源数据库"。

  • 最新稳定版本系列:15、16。

  • 部署方式有很多:

    • Docker/Docker Compose:快速上手,适合开发测试。

    • 源码编译安装:适合想要学习源码、定制功能或没有合适二进制包的环境。


二、使用 Docker Compose 部署 PostgreSQL

2.1 前提条件

  • 已安装 Dockerdocker-compose(或新版 docker compose)。

  • Linux / Windows / macOS 都可以。

检查命令:

docker --version
docker compose version   # 或 docker-compose --version

2.2 创建目录与配置文件

新建一个工作目录,例如:

mkdir ~/postgres-docker
cd ~/postgres-docker

在目录下创建 docker-compose.yml

version: "3.8"

services:
  db:
    image: postgres:16
    container_name: postgres16
    restart: unless-stopped
    environment:
      POSTGRES_USER: demo_user          # 数据库用户
      POSTGRES_PASSWORD: DemoPwd123!    # 用户密码
      POSTGRES_DB: demo_db              # 默认数据库
    volumes:
      - pgdata:/var/lib/postgresql/data   # 数据持久化
      - ./initdb:/docker-entrypoint-initdb.d # 可选:初始化脚本
    ports:
      - "5432:5432"

volumes:
  pgdata:

说明:

  • 使用官方镜像 postgres:16

  • POSTGRES_USER/POSTGRES_PASSWORD:启动时创建的默认用户和密码。

  • POSTGRES_DB:启动时创建的默认数据库。

  • docker-entrypoint-initdb.d:可放 .sql.sh 文件,首次初始化时会自动执行。


2.3 启动

docker compose up -d

检查容器:

docker ps
docker compose logs -f db

2.4 连接数据库

容器内进入:

docker exec -it postgres16 psql -U demo_user -d demo_db

宿主机(需要安装 psql 客户端):

psql -h 127.0.0.1 -p 5432 -U demo_user -d demo_db

2.5 常见管理操作

  • 备份数据库:

docker exec -t postgres16 pg_dump -U demo_user demo_db > demo_db.sql
  • 恢复数据库:

docker exec -i postgres16 psql -U demo_user -d demo_db < demo_db.sql
  • 停止服务:

docker compose down

三、源码编译安装 PostgreSQL

适合:需要定制安装、修改源码、或系统无官方包时。

3.1 准备环境

Ubuntu/Debian 为例:

sudo apt update
sudo apt install -y build-essential libreadline-dev zlib1g-dev flex bison

CentOS / RHEL 系列:

sudo yum groupinstall -y "Development Tools"
sudo yum install -y readline-devel zlib-devel bison flex

3.2 下载源码

去官方页面 https://www.postgresql.org/ftp/source/ 找到最新版本,例如 PostgreSQL 16.3:

wget https://ftp.postgresql.org/pub/source/v16.3/postgresql-16.3.tar.gz
tar -xvzf postgresql-16.3.tar.gz
cd postgresql-16.3

3.3 编译与安装

./configure --prefix=/usr/local/pgsql
make
sudo make install

说明:

  • --prefix 指定安装目录(默认是 /usr/local/pgsql)。


3.4 创建用户与目录

PostgreSQL 通常建议单独用户运行:

sudo adduser postgres
sudo mkdir /usr/local/pgsql/data
sudo chown postgres /usr/local/pgsql/data

3.5 初始化数据库

切换到 postgres 用户:

sudo su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

3.6 启动数据库

/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

查看状态:

ps aux | grep postgres

3.7 使用数据库

切换用户:

/usr/local/pgsql/bin/psql -d postgres

创建用户/库:

CREATE USER demo_user WITH PASSWORD 'DemoPwd123!';
CREATE DATABASE demo_db OWNER demo_user;
\q

3.8 设置开机自启(简单版)

编辑 /etc/systemd/system/postgresql.service

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -l /usr/local/pgsql/logfile
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D /usr/local/pgsql/data

[Install]
WantedBy=multi-user.target

启用:

sudo systemctl daemon-reload
sudo systemctl enable postgresql
sudo systemctl start postgresql

四、常见问题与小白提醒

  1. 端口冲突:Postgres 默认端口是 5432,如被占用,修改 postgresql.conf 中的 port

  2. 远程连接

    • 编辑 postgresql.conf,设置 listen_addresses = '*'

    • 修改 pg_hba.conf,增加一行:

      host    all             all             0.0.0.0/0               md5
      
    • 重启服务后,确认防火墙放行 5432。

  3. 编码与字符集:推荐使用 UTF8。初始化时可指定:

    initdb -D /usr/local/pgsql/data --encoding=UTF8 --locale=C
    

五、总结

  • Docker Compose 部署:最快捷,适合开发和测试环境。

  • 源码编译安装:适合学习、定制和生产(需运维经验)。

  • 小白建议优先使用 Docker,生产再考虑源码或官方二进制包。



用键盘敲击出的不只是字符,更是一段段生活的剪影、一个个心底的梦想。希望我的文字能像一束光,在您阅读的瞬间,照亮某个角落,带来一丝温暖与共鸣。

IWA

estp 企业家

具有版权性

请您在转载、复制时注明本文 作者、链接及内容来源信息。 若涉及转载第三方内容,还需一同注明。

具有时效性

文章目录

IWA的艺术编程,为您导航全站动态

23 文章数
9 分类数
10 评论数
26标签数
最近评论
IWA

IWA


👍

M丶Rock

M丶Rock


😂

M丶Rock

M丶Rock


感慨了

M丶Rock

M丶Rock


厉害了

M丶Rock

M丶Rock


6666666666666666666