Linux\Docker部署Postgres
PostgrteSQL是什么
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES, 版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)
为什么用PostgreSQL
- 用户多,许多开源项目采用PostgreSQl
https://survey.stackoverflow.co/2024 - PostgreSQl复杂查询性能更好,Mysql单查性能更好
- PostgreSQl支持的数据类型更丰富,如数组、JSON、XML,还可以自定义类型;Mysql 5.7开始支持JSON但性能较差
- PostgreSQl并发控制和事务隔离功能更多,支持序列化的事务隔离级别,可以保证高并发下的数据一致性
- 开源、免费商用,很多国产数据库基于PostgreSQl分发
- 使用SQL(Structured Query Language,结构化查询语言)
安装Postgres
- 本例采用Debian Linux或Docker安装PostgreSQL,不装本机主要是为了隔离环境,如果使用Win,建议使用虚拟机、WSL、Docker
官网:https://www.postgresql.org/download/
1、 Debian Linux安装Postgres
导入存储库签名
sudo apt install curl ca-certificatessudo install -d /usr/share/postgresql-common/pgdgsudo curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc
创建存储库配置文件
sudo sh -c 'echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
更新软件包列表
sudo apt update
安装Postgres
指定版本
sudo apt -y install postgresql-16
sudo apt -y install postgresql
卸载Postgres
# 卸载软件包
sudo apt remove --purge postgresql\*
# 清理数据(可选,如果你想保留数据)
sudo rm -rf /var/lib/postgresql
清理 用户和用户组
sudo userdel postgressudo groupdel postgres
# 清理缓存
sudo apt autoremovesudo apt clean
2、 Docker部署Postgres
- 直接运命令部署,需要提前创建自定义网络,自定义网络可以通过容器名称通信
docker network ls
查看已有网络,使用默认bridge
只能通过ip通信,这里加入了自定义网络,自定义网络可以自动解析容器名创建自定义网络
docker network create pub-network
手动连接网络
docker network connect pub-network container_name_or_id
删除网络
docker network rm network_name_or_idid
docker run -it -d \
--name postgres \
--network pub-network \
--restart always \
-e POSTGRES_PASSWORD='root123456' \
-v /var/lib/postgresql/data:/var/lib/postgresql/data \
-v /var/log/postgresql:/var/lib/postgresql/log \
-p 5432:5432 \
postgres
-v 宿主机路径:容器路径
默认账号名:postgres
部署pgAdmin
修改你的邮件和密码
docker run -d \
--name pgAdmin \
--network pub-network \
--restart always \
-p 5050:80 \
-e PGADMIN_DEFAULT_EMAIL=user@domain.com \
-e PGADMIN_DEFAULT_PASSWORD=root123456 \
dpage/pgadmin4
访问:
http://localhost:5050/
账号密码:指定的
user@domain.com/root123456
- 使用
docker-compose.yml
部署
services:postgres:image: postgrescontainer_name: postgresrestart: alwaysenvironment:POSTGRES_PASSWORD: 'root123456'volumes:- /var/lib/postgresql/data:/var/lib/postgresql/data- /var/log/postgresql:/var/lib/postgresql/logports:- 5432:5432networks:- pub-networkpgadmin:image: dpage/pgadmin4container_name: pgAdminrestart: alwaysports:- 5050:80environment:PGADMIN_DEFAULT_EMAIL: user@domain.comPGADMIN_DEFAULT_PASSWORD: root123456networks:- pub-networknetworks:pub-network:name: pub-network
部署
docker-compose -f docker-compose.yml up
删除postgres
docker stop postgresdocker rm postgres
连接postgres
使用pgAdmin连接postgres
使用Navicat连接postgres