• 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=# 
     
  • 相关阅读:
    Redis(八)理解内存
    Redis(七)Redis的噩梦:阻塞
    Redis(六)复制
    Redis(五)持久化
    笔试面试经典问题
    两个栈实现一个队列
    单链表相关操作
    我的笔记本
    10进制正整数转4位定长的36进制字符串
    微软2016校园招聘在线笔试之Magic Box
  • 原文地址:https://www.cnblogs.com/mingfan/p/14003075.html
Copyright © 2020-2023  润新知