目录
一、基本使用
1.1登录数据库
1.2数据库操作
1.2.1列出库
2.SQL查询
1.2.2创建与删除库
1.2.3切换与查看库
1.3数据表操作
1.3.1列出表
1.3.2创建与复制表
1.3.3删除表与查看结构
1.4模式(Schema)操作
1.4.1模式的作用
1.4.2创建于删除模式
1.4.3搜索路径(Search Path0)
1.4.4跨模式操作
二、备份与恢复
2.1 SQL转储
2.1.1 pg_dump工具
2.1.2 恢复数据
2.2pg_dumpall工具
2.3备份策略对比
三、远程连接配置
3.1修改监听地址
3.2配置访问权限
3.3验证远程连接
四、密码重置
4.1临时信任本地连接
五、总结与最佳实践
5.1 核心知识点总结
5.2操作建议
PostgreSQL的登陆机制是其安全性的第一道防线。默认情况下,必须使用postgres用户进行初始登录,这是系统的超级用户,具备最高权限。登录流程如下:
su - postgres
/usr/local/pgsql/bin/psql
登录成功后,命令行提示符变为postgres=#,表示当前连接的数据库为postgres,
核心要点:
PostgreSQL提供多种方式查看数据库列表:
1.元命令:
SELECT datname FROM pg_database;
pg_database是系统目录表,存储所有数据库的元数据,其内容不受当前连接数据库影响。
对比分析:
CREATE DATABASE mydb;
默认以template1为模板,可通过TEMPLATE参数指定其他模板(如template0)。
DROP DATABASE mydb;
注意事项:
\c mydb
切换后提示符变为mydb=#,表示当前数据库为mydb。
SELECT pg_size_pretty(pg_database_size('mydb'));
该命令将字节转换为易读单位(如MB、GB),便于运维监控。
SELECT * FROM pg_tables WHERE schemaname = 'public';
pg_tables是系统视图,基于pg_class和pg_namespace动态生成。
CREATE TABLE test (id INT, name CHAR(10), age INT);
PostgreSQL支持丰富的字段类型(如SERTAL自增、JSONB二进制JSON)。
CREATE TABLE new_table AS TABLE old_table;
此操作仅复制表结构和数据,不复制约束、索引等高级对象。
DROP TABLE test2;
风险提示:删除表将永久丢失数据,建议结合事务或备份操作。
\d test
输出包括字段名、类型、是否可为空、默认值等元数据。
模式是数据库内的逻辑分组,用于解决命名冲突和权限隔离。例如,同一数据库内可存在hr.employees和finance.employees两个同名表。
CREATE SCHEMA hr;
DROP SCHEMA hr CASCADE;
CASCADE表示级联删除模式下的所有对象(如表、视图)。
SHOW search_path;
默认值为"$user",public,表示优先查找与当前用户同名的模式。
SET search_path TO hr, public;
此设置仅对当前会话有效,需通过SLTER ROLE或修改postgresql.conf持久化。
SELECT * FROM schema1.users;
SET search_path TO schema1;
SELECT * FROM users; -- 默认访问schema1.users
优势:避免频繁输入模式名,提升开发效率。
pg_dump mydb > mydb_backup.sql
特性:
psql mydb < mydb_backup.sql
注意事项:
pg_dumpall > cluster_backup.sql
功能:备份所有数据库及全局对象(如角色、表空间)。
恢复命令:
psql -f cluster_backup.sql postgres
方法 | 优点 | 缺点 | 适用场景 |
SQL转储 | 跨版本兼容、逻辑备份 | 恢复时间较长 | 小型数据库、迁移 |
文件系统备份 | 快速、物理备份 | 依赖文件系统快照功能 | 大型数据库、定期全量 |
连续归档 | 支持PITR(时间点恢复) | 配置复杂、需持续归档 | 高可用、容灾需求 |
listen_addresses = '*' # 允许所有IP连接
host all all 0.0.0.0/0 scram-sha-256
认证方法说明:
psql -h 192.168.10.102 -U postgres
安全建议:
1.备份pg_hba.conf:
cp pg_hba.conf pg_hba.conf.bak
2.修改认证方法:
host all all 127.0.0.1/32 trust
3.重启服务:
systemctl restart postgresql
4.2修改密码
ALTER USER postgres WITH PASSWORD 'NewPassword123!';
4.3恢复配置
通过掌握上述技能,用户可高效管理PostgreSQL数据库,为复杂业务场景提供稳定支持。