PostgreSQL之密码文件.pgpass
pg初始化的数据库默认认证方式为trust,该方式允许不输入密码即可登录数据库
trust认证的pg_hba.conf配置如下:
很明显,不安全
新初始化了一个md5认证的数据库(也可以直接修改已有数据库配置)
./initdb -Upostgres -A md5 -D ../data1 -W
md5认证的pg_hba.conf配置如下:
启动后登录该数据库就需要输入密码了
[postgres@mingfan bin]$ ./psql -Upostgres -dpostgres -p5433 Password for user postgres: psql (13.0) Type "help" for help. postgres=#
关于.pgpass
对数据库的大多数访问(包括psql程序)都通过libpq库进行。该库包含一项功能,如果指定一个名为.pgpass的文件(或PGPASSFILE引用的文件),则可以在其中放置以用户身份连接所需的密码。
好处:这允许通过诸如cron之类的机制自动执行日常管理任务。
.pgpass文件内容格式如下:
hostname:port:database:username:password
需要注意:
1、当密码包含冒号(:)时,必须用反斜杠(\ :)进行转义
2、字符“ *”可以匹配任何字段中的任何值(密码除外)
3、如果设置了环境变量PGPASSWORD,则不会读取〜/ .pgpass文件
4、Windows 7 64位上带有空格的路径的示例PGPASSFILE值:
设置PGPASSFILE = C:\ Program Files \ someapp \ pgpass.conf
5、请注意,环境变量值不得使用“(双引号)
6、关于权限:在 Unix 系统上,口令文件上的权限必须不允许所有人或组内访问,可以用chmod 0600 ~/.pgpass这样的命令实现。如果权限没有这么严格,该文件将被忽略。在Windows上,该文件被假定存储在一个安全的目录中,因此不会进行特别的权限检查。
实例:
vim ~/.pgpass #写入 localhost:5433:postgres:postgres:123456 #修改权限 chmod 0600 ~/.pgpass
检查下
此时本地登录数据库就不需要密码输入了
[postgres@mingfan bin]$ ./psql -Upostgres -dpostgres -p54321 psql (13.0) Type "help" for help. postgres=#
但行好事,莫问前程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了