Ubuntu 中安装 PostgreSQL 及常规操作指南

目录

[一、安装 PostgreSQL](#一、安装 PostgreSQL)

最新版本安装(推荐)

[安装特定版本(如 14)](#安装特定版本(如 14))

二、基本服务管理

三、连接数据库

四、常规数据库操作

[1. 用户与权限管理](#1. 用户与权限管理)

[2. 数据库管理](#2. 数据库管理)

[3. 表操作](#3. 表操作)

[4. 数据操作](#4. 数据操作)

[五、常用 psql 元命令](#五、常用 psql 元命令)

六、备份与恢复

[1. 使用 pg_dump](#1. 使用 pg_dump)

[2. 恢复数据库](#2. 恢复数据库)

七、配置远程访问

八、性能监控

九、扩展管理

十、日志管理

十一、版本升级

常用管理工具推荐

连接示例


一、安装 PostgreSQL
最新版本安装(推荐)
复制代码
# 添加官方源并安装
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install postgresql postgresql-contrib
安装特定版本(如 14)
复制代码
sudo apt install postgresql-14 postgresql-client-14

二、基本服务管理
命令 说明
sudo service postgresql start 启动服务
sudo service postgresql stop 停止服务
sudo service postgresql restart 重启服务
sudo service postgresql status 查看状态
sudo systemctl enable postgresql 设置开机自启

三、连接数据库
复制代码
# 切换到 postgres 系统用户
sudo -i -u postgres

# 连接默认数据库
psql  # 或指定数据库: psql mydb

# 直接连接(无需切换用户)
sudo -u postgres psql

四、常规数据库操作
1. 用户与权限管理
复制代码
-- 创建用户
CREATE USER devuser WITH PASSWORD 'securepass';

-- 修改密码
ALTER USER devuser PASSWORD 'newpass';

-- 授予数据库权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO devuser;

-- 删除用户
DROP USER IF EXISTS olduser;
2. 数据库管理
复制代码
-- 创建数据库
CREATE DATABASE mydb OWNER devuser ENCODING 'UTF8';

-- 列出所有数据库
\l

-- 切换数据库
\c mydb

-- 删除数据库
DROP DATABASE olddb;
3. 表操作
复制代码
-- 创建表
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 查看所有表
\dt

-- 查看表结构
\d users

-- 删除表
DROP TABLE users;
4. 数据操作
复制代码
-- 插入数据
INSERT INTO users (name, email) 
VALUES ('Alice', '[email protected]');

-- 查询数据
SELECT * FROM users WHERE name LIKE 'A%';

-- 更新数据
UPDATE users SET email = '[email protected]' WHERE id = 1;

-- 删除数据
DELETE FROM users WHERE id = 1;

五、常用 psql 元命令
命令 说明
\? 查看帮助
\l 列出数据库
\c dbname 切换数据库
\dt 列出表
\d table 查看表结构
\du 列出用户
\x 切换扩展显示模式
\timing 开启/关闭执行时间
\q 退出 psql
\i filename.sql 执行 SQL 文件
\e 在编辑器中编辑命令
\conninfo 显示连接信息

六、备份与恢复
1. 使用 pg_dump
复制代码
# 备份单个数据库
sudo -u postgres pg_dump mydb > mydb_backup.sql

# 备份所有数据库
sudo -u postgres pg_dumpall > all_backup.sql

# 压缩备份
sudo -u postgres pg_dump mydb | gzip > mydb_backup.gz
2. 恢复数据库
复制代码
# 恢复 SQL 备份
sudo -u postgres psql -d mydb -f mydb_backup.sql

# 恢复压缩备份
gunzip -c mydb_backup.gz | sudo -u postgres psql mydb

七、配置远程访问
  1. 修改配置文件:

    复制代码
    sudo nano /etc/postgresql/14/main/postgresql.conf

    取消注释并修改:

    复制代码
    listen_addresses = '*'
  2. 编辑访问规则:

    复制代码
    sudo nano /etc/postgresql/14/main/pg_hba.conf

    添加行:

    复制代码
    host    all             all             0.0.0.0/0               md5
  3. 重启服务:

    复制代码
    sudo service postgresql restart

八、性能监控
复制代码
-- 查看活动连接
SELECT * FROM pg_stat_activity;

-- 查看锁信息
SELECT * FROM pg_locks;

-- 查看表大小
SELECT pg_size_pretty(pg_total_relation_size('users'));

-- 查看索引使用情况
SELECT * FROM pg_stat_user_indexes;

九、扩展管理
复制代码
-- 安装扩展(如 PostGIS)
CREATE EXTENSION postgis;

-- 查看已安装扩展
\dx

-- 卸载扩展
DROP EXTENSION postgis;

十、日志管理
复制代码
# 查看错误日志位置
sudo -u postgres psql -c "SHOW log_directory;"

# 常用日志配置 (/etc/postgresql/14/main/postgresql.conf)
log_destination = 'stderr'
logging_collector = on
log_line_prefix = '%m [%p] %q%u@%d '
log_statement = 'all'  # 记录所有SQL

十一、版本升级
复制代码
# 安装新版本(如 15)
sudo apt install postgresql-15

# 停止服务
sudo service postgresql stop

# 升级数据
sudo pg_upgradecluster 14 main 15

# 删除旧版本(确认新版本正常后)
sudo pg_dropcluster 14 main

常用管理工具推荐

  1. pgAdmin (GUI):

    复制代码
    sudo apt install pgadmin4
  2. 命令行工具 :

    复制代码
    sudo apt install postgresql-client-14

连接示例

复制代码
# 本地连接
psql -U devuser -d mydb

# 远程连接
psql -h 192.168.1.10 -p 5432 -U devuser -d mydb

提示:生产环境建议:

  1. 定期备份 (cron + pg_dump)
  2. 启用 WAL 归档
  3. 配置定期 vacuum
  4. 使用连接池 (pgBouncer)
相关推荐
令狐掌门2 小时前
linux VFS简介
linux
SuperW2 小时前
从零学Linux(1)——软件包管理与shell编程
linux·运维·服务器
shylyly_3 小时前
Linux->进程概念(精讲)
linux·服务器·进程·孤儿进程·环境变量·进程地址空间·虚拟地址
ZCQ_dashuaibi3 小时前
DHCP服务管理
linux·服务器·网络
xcs194053 小时前
java 导入数据和数据验证处理方案
java·linux·python
塔能物联运维3 小时前
案例:Cat.1+LED双轮驱动,塔能科技重塑某县城智能照明生态
linux·运维·服务器
愚润求学3 小时前
【递归,搜索与回溯算法】记忆化搜索(二)
linux·c++·算法·leetcode
威桑4 小时前
在 Windows 和 Linux 下使用 C/C++ 连接 MySQL 的详细指南
linux·c语言·windows
Dontla4 小时前
Linux系统时间不对导致mysql初始化失败:Data Dictionary initialization failed.(数据字典版本验证失败)
linux·mysql
布说在见5 小时前
Linux 服务器运维:磁盘管理与网络配置
linux·运维·服务器