本文覆盖 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
补充知识点:密码重置核心是临时信任本地连接,修改后务必恢复原配置,保障安全。
八、日常维护建议
- 定期用
pg_dump备份核心库,pg_dumpall备份全实例; - 生产环境严格控制
pg_hba.conf权限,仅开放信任 IP; - 用
Schema分类管理表,避免命名冲突; - 恢复数据后执行
ANALYZE,更新查询优化器统计信息。