Dee*_*eyi 24 postgresql bash database-backups
我.pgpass
在我的主目录中创建了一个文件,看起来像这样
localhost:5432:somedb:someuser:somepass
我正在使用一个shell脚本创建一个目录并在其中放置一个pg_dump somedb
:
mkdir directory
pg_dump somedb > directory/somefile.dump
Run Code Online (Sandbox Code Playgroud)
它仍然提示输入密码.
这里的错误在哪里?
dev*_*ull 25
您是否尝试指定主机和用户?
pg_dump -U someuser -h localhost somedb > directory/somefile.dump
Run Code Online (Sandbox Code Playgroud)
Nac*_*dra 20
虽然问题已经得到解答和接受,但也可能发生.pgpass文件的权限设置不正确.它必须禁止世界和组访问:
/bin/chmod 0600 ~/.pgpass
Run Code Online (Sandbox Code Playgroud)
yon*_*ran 13
psql
( startup.c ) 调用PQconnectdbParams
( fe-connect.c ),然后passwordFromFile
被调用。这是确保将使用 pgpass 文件的清单:
--password
/-W
和password=
中连接字符串都没有设置。否则,将不会使用 pgpass 文件。PGPASSWORD
未设置 ( echo $PGPASSWORD
)。否则,将不会使用 pgpass 文件。$PGPASSFILE
或默认~/.pgpass
或%APPDATA%\postgresql\pgpass.conf
)chmod 600 ~/.pgpass
)读取、写入或执行;否则psql
会打印警告。psql
会打印警告。psql
用户可以读取密码文件(例如cat ~/.pgpass
);否则psql
将在没有警告的情况下忽略它。确保它归用户所有,并且它的所有祖先目录都可由用户执行。hostname:port:database:username:password
(密码文件,passwordFromFile
)。每个字段(密码除外)都可以是*
. 字符:
和\
必须转义\:
和\\
(即使在密码中)。密码在行尾:
或行尾结束,可以包含除\r
、\n
、 或之外的任何字节\0
。任何格式不正确或与主机和用户不匹配的行都将被忽略而不会发出警告,就好像它们是注释一样。*
. 被检查的服务器的“pwhost”是host
名称(如果非空)或hostaddr
IP地址。否则,该行将在没有警告的情况下被忽略。不幸的是,这些文件中没有日志记录,所以如果这没有帮助,那么您可能需要自己编译psql
并libpq
在调试器中运行它。
Shr*_*vas 10
1)创建包含内容的.pgpass文件
主机:5432:somedb:someuser:somepass
2)使用命令设置权限
须藤chmod 600 .pgpass
3)将文件所有者设置为您登录时使用的同一用户:
sudo chown login_username:login_username .pgpass
4)设置PGPASSFILE环境变量:
导出PGPASSFILE ='/ home / user / .pgpass'
现在通过连接到数据库进行检查:
psql -h host -U someuser somedb
它不会提示输入密码并登录到postgresql。
检查.pgpass文件的所有者。只是浪费了半个小时才发现我已经使用sudo创建了.pgpass文件。我的用户和位置的命令为chown postgres:postgres /var/lib/pgsql/.pgpass
。
归档时间: |
|
查看次数: |
23781 次 |
最近记录: |