连接前的准备工作
-
确认连接信息
获取以下数据库信息:- 主机地址(Host):数据库服务器 IP 或域名(本地为
localhost
) - 端口(Port):默认
5432
- 数据库名(Database):目标数据库名称
- 用户名(Username):有访问权限的账号
- 密码:对应用户的密码
- 主机地址(Host):数据库服务器 IP 或域名(本地为
-
安装客户端工具
- Linux/macOS:系统通常预装
psql
,未安装则执行:sudo apt-get install postgresql-client # Debian/Ubuntu sudo yum install postgresql # CentOS/RHEL
- Windows:通过 PostgreSQL 官网 安装时勾选 Command Line Tools。
- Linux/macOS:系统通常预装
连接数据库的命令格式
基础语法:
psql -h [主机地址] -p [端口] -d [数据库名] -U [用户名]
常用场景示例
-
连接本地数据库(默认参数)
若数据库在本地且使用默认端口5432
:psql -d mydb -U myuser
-
指定远程服务器和端口
psql -h 192.168.1.100 -p 5433 -d production_db -U admin
-
连接后执行 SQL 命令
通过-c
参数直接执行 SQL:psql -h localhost -d testdb -U postgres -c "SELECT version();"
-
使用密码文件避免交互输入
创建~/.pgpass
文件(权限需设为600
):hostname:port:database:username:password
168.1.100:5432:production_db:admin:MySecurePass123
连接后的常用操作
进入 psql
交互环境后:
| 命令 | 作用 |
|———————|————————–|
| \l
| 列出所有数据库 |
| \c [数据库名]
| 切换数据库 |
| \dt
| 显示当前数据库的所有表 |
| \d [表名]
| 查看表结构 |
| \q
| 退出 psql |
| \?
| 查看帮助 |
常见连接问题解决
-
认证失败
- 检查
pg_hba.conf
文件(位于 PostgreSQL 数据目录),确认允许客户端 IP 的连接。
示例配置:# 允许所有 IP 通过密码连接 host all all 0.0.0.0/0 md5
- 重启服务生效:
sudo systemctl restart postgresql
。
- 检查
-
连接超时/拒绝
- 确认防火墙开放端口(默认
5432
):sudo ufw allow 5432/tcp # Linux
- 确保 PostgreSQL 监听外部地址:修改
postgresql.conf
中listen_addresses = '*'
。
- 确认防火墙开放端口(默认
-
命令未找到(psql: command not found)
- 添加环境变量(Windows:配置系统 PATH;Linux/macOS):
export PATH=$PATH:/usr/lib/postgresql/14/bin # 路径根据实际版本调整
- 添加环境变量(Windows:配置系统 PATH;Linux/macOS):
安全注意事项
-
避免密码暴露
禁止直接在命令中写密码(如-W password
),推荐使用.pgpass
文件或交互输入。 -
最小权限原则
为应用创建专用用户,仅授予必要权限:CREATE USER app_user WITH PASSWORD 'StrongPass!'; GRANT SELECT, INSERT ON my_table TO app_user;
-
加密传输
生产环境启用 SSL 连接:psql "sslmode=require host=db.example.com dbname=mydb user=myuser"
掌握 psql
命令行连接是管理 PostgreSQL 的核心技能,通过 -h
, -p
, -U
, -d
参数指定连接信息,结合 .pgpass
文件管理密码,可高效完成日常操作,遇到连接问题时,优先检查网络、防火墙及 pg_hba.conf
配置。
引用说明参考 PostgreSQL 官方文档 psql 使用指南 及安全最佳实践,操作示例在 PostgreSQL 14 环境验证通过。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7761.html