我得到一个错误:
FATAL: Peer authentication failed for user "postgres"
当我试图让postgres使用rails时。
这是我的 pg_hba.conf
,我的 database.yml
,以及一堆完整的痕迹。
我在pgèhba中将身份验证更改为md5,并尝试了不同的方法,但似乎都不起作用。
我还尝试根据Rails3.2创建一个新用户和数据库,致命错误:用户的对等身份验证失败(pg::error)
但他们不会出现在pgadmin上,甚至在我跑步的时候 sudo -u postgres psql -l
.
知道我哪里出错了吗?
19条答案
按热度按时间xt0899hw1#
问题还是你的
pg_hba.conf
文件(/etc/postgresql/9.1/main/pg_hba.conf*
).这条线:
应该是:
locate pg_hba.conf
应该告诉你文件在哪里。更改此文件后,不要忘记重新启动postgresql服务器。如果你使用的是linux,那就是
sudo service postgresql restart
.根据postgresql官方的认证方法文档,这两个选项都有简要的描述。
对等身份验证
对等身份验证方法的工作原理是从内核获取客户端的操作系统用户名,并将其用作允许的数据库用户名(具有可选的用户名Map)。此方法仅在本地连接上受支持。
密码验证
基于口令的认证方法有md5和password。除了通过连接发送密码的方式(即md5散列和明文)之外,这些方法的操作方式类似。
如果您对密码“嗅探”攻击有任何顾虑,那么最好使用md5。如果可能,应始终避免使用普通密码。但是,md5不能与db\u user\u命名空间功能一起使用。如果连接受ssl加密保护,那么可以安全地使用密码(不过,如果需要使用ssl,ssl证书身份验证可能是更好的选择)。
样品位置
pg_hba.conf
:/etc/postgresql/9.1/main/pg_hba.conf
1zmg4dgp2#
安装postgresql之后,我做了以下步骤。
打开文件
pg_hba.conf
对于ubuntu,它将在/etc/postgresql/9.x/main
并更改这行:到
重新启动服务器
登录psql并设置密码
终于改变了
pg_hba.conf
从到
重新启动postgresql server后,您可以使用自己的密码访问它
身份验证方法详细信息:
信任-任何可以连接到服务器的人都有权访问数据库
对等-使用客户端的操作系统用户名作为数据库用户名来访问它。
md5-基本密码身份验证
更多参考请点击此处
6ju8rftf3#
如果您通过localhost(127.0.0.1)进行连接,就不会遇到这种问题。我不太喜欢pg_hba.conf,但我会调整您的连接字符串:
其中someuser是您要连接的用户,database是您的用户有权连接的数据库。
下面是我在debian上设置postgres的步骤:
好好享受!
x8diyxa74#
这对我有用!!
gz5pxeao5#
这解决了我的问题
igsr9ssn6#
如果您有问题,您需要找到您的
pg_hba.conf
. 命令是:find / -name 'pg_hba.conf' 2>/dev/null
然后更改配置文件:postgresql 9.3版
postgresql 9.4版
下一步是:重新启动db示例:
service postgresql-9.3 restart
如果您有任何问题,需要重新设置密码:ALTER USER db_user with password 'db_password';
m0rkklqb7#
转到/etc/postgresql/9.x/main/并打开pgèhba.conf文件
就我而言:
用md5替换peer
因此将更改为:
通过unix域套接字本地所有postgres对等机进行数据库管理登录
这是:
通过unix域套接字本地所有postgres md5进行数据库管理登录
然后重新启动pg服务器:
$>sudo服务postgresql重启
以下是用于连接postgres的方法列表:
注意:如果你还没有创建你的postgres用户。创建它,现在您可以使用该用户凭据访问postgres服务器。
提示:如果在postgres重启后它不工作,那么关闭终端并再次打开。
nue99wik8#
最简单的解决方案,无需更改配置((ubuntu)更改用户,然后连接到数据库cli。
取自https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04
nr7wwzry9#
我也有同样的问题。
depa的解决方案是绝对正确的。
只要确保你有一个用户配置为使用postgresql。
检查文件:
此文件的权限应授予已向其注册psql的用户。
更进一步。如果你到现在还不错。。
按照@depa的指示更新。
即
然后做出改变。
o2g1uqev10#
我在克隆服务器上移动数据目录,登录postgres时遇到问题。像这样重新设置postgres密码对我很有效。
muk1a3rh11#
如果要保留默认配置,但要对一个特定用户/db连接使用套接字连接进行md5身份验证,请在“local all/all”行之前添加“local”行:
cnh2zyt312#
上面的编辑对我来说很有用,因为我发现我需要在完成后重新启动postgres服务器。对于ubuntu:
ppcbkaq513#
将pgèhba.conf(/etc/postgresql/9.1/main/pgèhba.conf | line 85)中的方法peer更改为trust可以解决这个问题。添加md5需要密码,因此如果需要避免使用密码,请使用trust而不是md5。
vfhzx4xs14#
使用
host=localhost
与此相关。2sbarzqh15#
以下命令适用于我: