Kos*_*aut 94 postgresql pg-dump
我一直在使用主机变量尝试PGPASSWORD和.pgpass并没有这两个让我来验证数据库.我已经chmod倒是.pgpass给适当的权限,也尝试过:
export PGPASSWORD=mypass and PGPASSWORD=mypass
Run Code Online (Sandbox Code Playgroud)
密码包含\但是我用单引号将其包装起来PGPASS='mypass\',但仍然无法进行身份验证.
我在跑:
pg_dump dbname -U username -Fc
Run Code Online (Sandbox Code Playgroud)
我仍然收到
pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username"
Run Code Online (Sandbox Code Playgroud)
Jim*_*ner 183
快速解决方案
问题是它正在尝试peer根据您当前的用户名执行本地身份验证.如果您想使用密码,则必须指定主机名-h.
pg_dump dbname -U username -h localhost -F c
Run Code Online (Sandbox Code Playgroud)
说明
这是由于您的以下内容 pg_hba.conf
local all all peer
host all all 127.0.0.1/32 md5
Run Code Online (Sandbox Code Playgroud)
这告诉Postgres peer对本地用户使用身份验证,要求postgres用户名与您当前的系统用户名匹配.第二行是指使用主机名的连接,允许您通过该md5方法使用密码进行身份验证.
我的首选开发配置
注意:这应仅用于单用户工作站.这可能会导致生产或多用户计算机上的主要安全漏洞.
在针对本地postgres实例进行开发时,我喜欢将本地身份验证方法更改为trust.这将允许通过本地unix套接字连接到postgres,因为任何没有密码的用户.它可以通过简单地改变peer上面trust和重新加载postgres 来完成.
# Don't require a password for local connections
local all all trust
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61765 次 |
| 最近记录: |