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. 定期备份 + 日志归档 = 数据安全

相关推荐
前进的李工2 小时前
MySQL大小写规则与存储引擎详解
开发语言·数据库·sql·mysql·存储引擎
CoovallyAIHub2 小时前
Sensors 2026 | 从无人机拍摄到跑道缺陷地图,机场巡检全流程自动化——Zadar机场全跑道验证
数据库·架构·github
炸炸鱼.3 小时前
PostgreSQL 日常维护速查手册
数据库·oracle
014-code4 小时前
MySQL 常用业务 SQL
数据库·sql·mysql
知识分享小能手4 小时前
MongoDB入门学习教程,从入门到精通,MongoDB的选择片键 - 完整知识点(16)
数据库·学习·mongodb
知识分享小能手4 小时前
MongoDB入门学习教程,从入门到精通,MongoDB分片配置完全指南(15)
数据库·学习·mongodb
y = xⁿ5 小时前
【MySQL】数据库的脏读,不可重复读和幻读,覆盖索引是什么,索引类型有哪些
数据库·mysql
小冷coding5 小时前
【面试】结合项目整理的场景面试题,覆盖 Java 基础、锁、多线程、数据库、分布式锁 / 事务、消息中间件等核心维度
java·数据库·面试