postgresql日常运用

一、基础认知与登录

1. 核心定义

  • PostgreSQL(简称 PG/PgSQL):开源、稳定、标准兼容、支持复杂查询与扩展的企业级关系型数据库。
  • 默认超级用户:postgres(必须用此用户登录操作)。
  • 交互终端:psql(PG 自带命令行工具)。

二、数据库操作

  • 必须使用 postgres 用户登录
sql 复制代码
su - postgres
psql
  • 登录提示符:postgres=#

1. 列出数据库

  • 元命令:\l(简洁)、\l+(详细,含大小、表空间)

  • SQL 命令:SELECT datname FROM pg_database;

2. 创建 / 删除 / 切换数据库

sql 复制代码
CREATE DATABASE mydb;
DROP DATABASE mydb;
\c mydb  -- 切换库

3. 查看数据库大小

sql 复制代码
SELECT pg_database_size('mydb');                -- 字节
SELECT pg_size_pretty(pg_database_size('mydb'));-- 易读格式

三、常用元命令(psql 专用)

\ 开头,非 SQL 语句,用于快速管理:

元命令 作用
\? 查看所有元命令帮助
\q 退出 psql
\l / \l+ 列出所有数据库(+ 显示大小 / 表空间 / 描述)
\c 库名 切换数据库
\dn / \dn+ 列出所有模式(Schema)
\dt / \dt+ 列出当前库表(+ 显示详细信息)
\d 表名 查看表结构
\du / \du+ 列出所有用户 / 角色
\db 列出所有表空间
\dt *.* 列出所有表(含系统表)

四、数据表操作

1. 列出表

sql 复制代码
\dt
\dt *.*        -- 所有表(含系统表)
\dt myschema.* -- 指定模式下的表
SELECT * FROM pg_tables WHERE schemaname='public';

2. 创建 / 删除 / 复制表

sql 复制代码
CREATE TABLE test(id int, name char(10), age int);
DROP TABLE test;
CREATE TABLE test2 AS TABLE test; -- 复制结构+数据

五、模式(Schema)操作

1. 模式作用

  • 逻辑分组,避免命名冲突

  • 类似文件夹,支持权限隔离

2. 常用命令

sql 复制代码
CREATE SCHEMA hr;
DROP SCHEMA hr;
DROP SCHEMA hr CASCADE; -- 强制删除含对象的模式
\dn                     -- 查看模式

3. 搜索路径 search_path

  • 查看:SHOW search_path;

  • 设置:SET search_path TO hr, public;

  • 当前模式:SELECT current_schema();

4. 指定模式建表

sql 复制代码
CREATE TABLE hr.employees(id SERIAL PRIMARY KEY, name TEXT);

六、数据增删改查

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;

七、备份与恢复

1. SQL 转储(pg_dump)

  • 备份单库:
sql 复制代码
pg_dump mydb > dump.sql
  • 跨机直接迁移:
sql 复制代码
pg_dump -h host1 mydb | psql -h host2 mydb

2. 恢复

sql 复制代码
createdb -T template0 mydb
psql mydb < dump.sql
  • 安全恢复:psql -1 --set ON_ERROR_STOP=on mydb < dump.sql

3. 全集群备份(pg_dumpall)

sql 复制代码
pg_dumpall > all.sql
psql -f all.sql postgres
  • 仅备份全局信息(角色 / 表空间):pg_dumpall --globals-only

八、远程连接配置

1. 修改监听地址

文件:postgresql.conf

sql 复制代码
listen_addresses = '*'

2. 配置访问权限

文件:pg_hba.conf

sql 复制代码
host  all  all  0.0.0.0/0  scram-sha-256
  • 认证方式:trust(无密码,仅测试)、md5scram-sha-256(推荐)

3. 重启生效

复制代码
systemctl restart postgresql

4. 远程连接

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

九、密码重置

  1. 备份 pg_hba.conf

  2. 本地认证改为 md5

  3. 重启服务

  4. 登录修改密码:

复制代码
ALTER USER postgres WITH PASSWORD '新密码';
  1. 恢复配置并重启

十、核心要点总结

  1. postgres 是默认超级用户

  2. 模式(Schema)实现库内逻辑隔离,支持同名表

  3. pg_dump 兼容跨版本、跨架构迁移

  4. 生产环境禁用 trust 认证,使用 scram-sha-256

  5. 定期备份 + 日志归档 = 数据安全

相关推荐
zlwool12 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
小灰灰搞电子13 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
软件聚导航15 小时前
「聚小软 AI 助手」技术升级:从数据库检索到 RAG 知识库问答
前端·数据库·mysql·微信小程序·小程序·ai编程·rag
学习星球15 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
GoppViper16 小时前
RDF资源描述框架深度解析:语义Web的数据基石与实战逻辑
前端·数据库
2601_9621741716 小时前
Redis 简介
数据库·redis·wpf
夜雪一千17 小时前
MySQL 各种数据同步方案全梳理:从简单复制到异构同步实战
数据库·mysql
xuefuhe17 小时前
PostgreSQL源码1:select 1
postgresql
Highcharts.js18 小时前
Highcharts 下钻(Drilldown)柱状图 Demo
数据库·信息可视化·hbase·highcharts·drilldown·js模块·下钻图表
翼龙云_cloud18 小时前
阿里云国际渠道代理商:如何在ECS上部署Flask应用?
运维·数据库·阿里云·flask·云计算