我得到了一个错误:
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
时也不会出现。
知道我哪里错了吗?
安装Postgresql之后,我执行了以下步骤。
>
打开Ubuntu的pg_hba.conf
文件,它将位于/etc/postgresql/9.x/main
中,并更改此行:
local all postgres peer
至
local all postgres trust
重新启动服务器
$ sudo service postgresql restart
登录psql并设置密码
$ psql -U postgres
db> ALTER USER postgres with password 'your-pass';
最后将pg_hba.conf
从
local all postgres trust
至
local all postgres md5
重新启动postgresql服务器后,您可以使用自己的密码访问它
身份验证方法详细信息:
信任-任何可以连接到服务器的人都有权访问数据库
对等--使用客户端的操作系统用户名作为数据库用户名访问它。
md5-基于密码的身份验证
在此进行进一步的参考查询
问题仍然是您的pg_hba.conf
文件(/etc/postgresql/9.1/main/pg_hba.conf*
)。
这一行:
local all postgres peer
应该是:
local all postgres md5
*如果找不到此文件,运行locate pg_hba.conf
应该会显示文件的位置。
修改此文件后,不要忘记重新启动PostgreSQL服务器。如果您在Linux上,那么这将是sudo service postgresql restart
。
以下是根据官方的PostgreSQL认证方法文档对这两个选项的简要描述。
对等身份验证方法的工作方式是从内核获取客户端的操作系统用户名,并将其用作允许的数据库用户名(具有可选的用户名映射)。此方法仅在本地连接上受支持。
基于口令的身份验证方法有md5和Password。除了跨连接发送密码的方式(分别为MD5散列和明文)之外,这些方法的操作类似。
如果你对密码“嗅探”攻击感到担忧,那么md5是首选。如果可能,应始终避免使用普通密码。但是,md5不能与db_user_namespace特性一起使用。如果连接受到SSL加密的保护,那么密码就可以安全地使用(虽然如果依赖于使用SSL,SSL证书身份验证可能是更好的选择)。
pg_hba.conf
的示例位置:/etc/postgresql/9.1/main/pg_hba.conf
我似乎正确地安装了PostgreSQL 9.5.5。和Psycopg2,可以通过以下方式登录:
我明白,如果添加-h localhost,它就可以工作了。 添加此标志是否会导致psql使用对等身份验证?
我第一次将应用程序部署到数字海洋,遇到了两个(可能更多)问题。 1) 在将添加到Gemfile后,我无法。我发现kgio与windows不兼容。我必须要Gemfile吗。当我通过capistrano部署时是否存在锁?我如何解决这个问题? 2)我在服务器上的postgreql上遇到身份验证问题。 我运行了这些命令(以及其他一些命令): 每次我限制部署时,我都会收到这个错误: 我尝试输入一个我知道不存
当我创建一个新用户,但它无法登录数据库时。 我这样做: 然后创建一个数据库: 之后,我尝试登录,但出现错误: 我试图解决这个问题,但失败了。
身份验证设置看起来还可以,所以我不确定从这里要做什么。
我已经设置了一个LDAP自定义身份验证提供程序,类似于这里的示例-https://www.baeldung.com/spring-security-authentication-provider 有一个登录控制器来处理登录错误,并检查用户是否在已批准的列表中。控制器调用自定义身份验证提供程序,即authenticationManager。authenticate()方法。 如果提供了错误的凭据,将