PostgreSQL 日常维护速查手册

本文覆盖 PostgreSQL 基础操作、库表管理、Schema 使用、备份恢复、远程连接、密码重置全流程,包含全部实操代码,并补充关键知识点,简洁实用、便于快速查阅。

一、基础登录与元命令

1. 登录数据库

bash

运行

复制代码
# 切换至postgres系统用户
su - postgres
# 进入psql交互终端
psql
  • 默认超级用户:postgres,登录后提示符:postgres=#
  • 退出 psql:\q

2. 核心元命令(必记)

sql

复制代码
-- 查看所有元命令帮助
\?
-- 列出所有数据库
\l
-- 列出所有用户
\du
-- 列出当前库所有表
\dt
-- 查看表结构
\d 表名
-- 切换数据库
\c 数据库名

补充知识点 :元命令以\开头,是 PostgreSQL 专属快捷操作,等价于部分 SQL 查询,效率更高。


二、数据库管理

1. 基础操作

sql

复制代码
-- 创建数据库
CREATE DATABASE mydb;
-- 删除数据库
DROP DATABASE mydb;
-- 切换数据库
\c mydb;

2. 查看数据库信息

sql

复制代码
-- 查看数据库大小(字节)
SELECT pg_database_size('mydb');
-- 格式化显示大小
SELECT pg_size_pretty(pg_database_size('mydb'));
-- SQL方式查询所有库名
SELECT datname FROM pg_database;

补充知识点pg_database是系统表,存储所有数据库元信息,所有库均可访问。


三、数据表管理

1. 表基础操作

sql

复制代码
-- 创建表
CREATE TABLE test(id INT, name VARCHAR(10), age INT);
-- 复制表(结构+数据)
CREATE TABLE test2 AS TABLE test;
-- 删除表
DROP TABLE test2;
-- 查看表结构
\d test;

2. 数据增删改查

sql

复制代码
-- 插入数据
INSERT INTO test VALUES(1,'zhangsan',18);
-- 查询数据
SELECT * FROM test;
-- 修改数据
UPDATE test SET age=20 WHERE id=1;
-- 删除数据
DELETE FROM test WHERE id=1;

补充知识点 :PostgreSQL 支持SERIAL自增主键、TEXT大文本、几何类型等,比 MySQL 类型更丰富。


四、Schema(模式)管理

1. Schema 核心操作

sql

复制代码
-- 创建模式
CREATE SCHEMA hr;
-- 删除空模式
DROP SCHEMA hr;
-- 强制删除模式(含对象)
DROP SCHEMA hr CASCADE;
-- 查看所有模式
\dn
-- 指定模式创建表
CREATE TABLE hr.employees(id SERIAL PRIMARY KEY, name TEXT);

2. 模式搜索路径

sql

复制代码
-- 查看当前搜索路径
SHOW search_path;
-- 设置默认模式(优先访问hr)
SET search_path TO hr, public;
-- 查看当前模式
SELECT current_schema();

补充知识点:Schema 是数据库内逻辑分组,可同名表,实现权限隔离,MySQL 无此概念。


五、备份与恢复

1. 单库备份(pg_dump)

bash

运行

复制代码
# 基础备份(文本格式)
pg_dump mydb > mydb_dump.sql
# 远程备份
pg_dump -h 192.168.1.100 -U postgres mydb > mydb_dump.sql

2. 单库恢复

bash

运行

复制代码
# 先创建空库
createdb -T template0 mydb
# 恢复数据
psql mydb < mydb_dump.sql
# 安全恢复(出错终止)
psql --set ON_ERROR_STOP=on mydb < mydb_dump.sql

3. 全实例备份(pg_dumpall)

bash

运行

复制代码
# 备份所有库+角色+表空间
pg_dumpall > all_dump.sql
# 全实例恢复
psql -f all_dump.sql postgres

补充知识点

  • pg_dump支持跨版本、跨架构迁移,不阻塞业务;
  • 恢复前需创建对应用户,否则权限会丢失。

六、远程连接配置

1. 修改监听地址

bash

运行

复制代码
# 编辑配置文件(源码安装路径)
vim /usr/local/pgsql/data/postgresql.conf
# 修改监听地址为所有IP
listen_addresses = '*'

2. 配置访问权限

bash

运行

复制代码
# 编辑认证文件
vim /usr/local/pgsql/data/pg_hba.conf
# 添加允许所有IP远程连接(生产慎用trust)
host all all 0.0.0.0/0 scram-sha-256

3. 重启服务生效

bash

运行

复制代码
systemctl restart postgresql

4. 远程连接测试

bash

运行

复制代码
psql -h 服务器IP -U postgres -d mydb

补充知识点

  • 生产环境禁用trust,推荐scram-sha-256加密认证;
  • 防火墙需开放 5432 端口。

七、密码重置

1. 备份配置文件

bash

运行

复制代码
cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.bak

2. 临时免密登录

bash

运行

复制代码
# 修改认证方式为trust
vim /var/lib/pgsql/data/pg_hba.conf
host all all 127.0.0.1/32 trust

3. 重启并修改密码

bash

运行

复制代码
systemctl restart postgresql
psql
# 修改超级用户密码
ALTER USER postgres WITH PASSWORD '新密码';

4. 恢复配置并重启

bash

运行

复制代码
cp /var/lib/pgsql/data/pg_hba.conf.bak /var/lib/pgsql/data/pg_hba.conf
systemctl restart postgresql

补充知识点:密码重置核心是临时信任本地连接,修改后务必恢复原配置,保障安全。


八、日常维护建议

  1. 定期用pg_dump备份核心库,pg_dumpall备份全实例;
  2. 生产环境严格控制pg_hba.conf权限,仅开放信任 IP;
  3. Schema分类管理表,避免命名冲突;
  4. 恢复数据后执行ANALYZE,更新查询优化器统计信息。
相关推荐
煎饼皮皮侠7 小时前
【设计】设计一个web版的数据库管理平台后端(之五) --借鉴mybatis
数据库·mybatis
东风破_13 小时前
danci 2:创建的单词书到底存在哪里?从 Supabase 一路理解 ORM、Drizzle 和 RLS
数据库·后端·node.js
橙子家14 小时前
OSS 文件上传的几个风险点和解决方案
数据库
2601_9620664916 小时前
【Sql Server】Update中的From语句,以及常见更新操作方式
android·java·数据库
愤怒的苹果ext17 小时前
MySQL Shell备份恢复数据库
数据库·mysql·备份恢复·mysqlsh
数字新视界18 小时前
DCIM管理系统的技术架构与部署模式详解
数据库·物联网·数据中心·数据中心基础设施管理·dcim管理系统
何以解忧,唯有..18 小时前
Pydantic 介绍与使用:Python 数据校验的现代方案
数据库·python·microsoft
这个DBA有点耶20 小时前
数据库容灾进入“秒级时代”:同城双活架构原理、关键技术选型与落地实践
数据库·架构·dba
2601_9620748120 小时前
大数据-264 实时数仓 - Canal MySQL的binlog研究 存储目录 变动信息 配置MySQL
大数据·数据库·mysql
2601_9620738120 小时前
大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL
大数据·数据库·mysql