一、基础认知与登录
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(无密码,仅测试)、md5、scram-sha-256(推荐)
3. 重启生效
systemctl restart postgresql
4. 远程连接
psql -h 服务器IP -U postgres -d 库名
九、密码重置
-
备份
pg_hba.conf -
本地认证改为 md5
-
重启服务
-
登录修改密码:
ALTER USER postgres WITH PASSWORD '新密码';
- 恢复配置并重启
十、核心要点总结
-
postgres 是默认超级用户
-
模式(Schema)实现库内逻辑隔离,支持同名表
-
pg_dump兼容跨版本、跨架构迁移 -
生产环境禁用
trust认证,使用scram-sha-256 -
定期备份 + 日志归档 = 数据安全