我收到了错误:
FATAL: Peer authentication failed for user "postgres"
当我尝试使用Rails进行postgres时 .
这是我的pg_hba.conf,我的database.yml和dump of the full trace .
我在pg_hba中将身份验证更改为md5并尝试了不同的操作,但似乎都没有 .
我也尝试按照Rails 3.2, FATAL: Peer authentication failed for user (PG::Error)创建新用户和数据库
但是他们没有出现在pgadmin上,甚至没有出现在 sudo -u postgres psql -l
上 .
知道我哪里错了吗?
18 回答
以下命令对我有用:
如果您通过localhost(127.0.0.1)连接,则不应遇到该特定问题 . 我不会吝啬pg_hba.conf但我会调整你的连接字符串:
其中某个用户是您正在连接的用户,而数据库是您的用户有权连接的数据库 .
这是我在Debian上设置postgres的方法:
请享用!
我有同样的问题 .
来自depa的解决方案绝对正确 .
只需确保您已将用户配置为使用PostgreSQL .
检查文件:
该文件的权限应该提供给您已注册psql的用户 .
进一步 . 如果你现在好,..
根据@depa的说明更新 .
即
然后进行更改 .
我的问题是我没有输入任何服务器 . 我认为这是一个默认因为占位符,但是当我键入localhost时它确实有效 .
在我发现我需要在制作后重新启动postgres服务器之后,上面的编辑对我有用 . 对于ubuntu:
连接使用
host=localhost
.许多其他答案与各种配置文件中的设置有关,与
pg_hba.conf
相关的答案适用并且100%正确 . 但是,请确保您是 modifying the correct config files .正如其他人所提到的,可以使用主配置文件中的各种设置覆盖配置文件位置,以及使用
-D
选项在命令行上提供主配置文件的路径 .您可以在psql会话中使用以下命令来显示正在读取配置文件的位置(假设您可以启动psql) . 这只是一个可以帮助某些人的故障排除步骤:
您还应该确保postgres用户的主目录是您期望的 . 我这样说是因为很容易忽略这一点,因为你的提示会显示'
~
'而不是主目录的实际路径,这使得它不那么明显 . 许多安装将postgres用户主目录默认为/var/lib/pgsql
.如果未设置为它应该是什么,请停止postgresql服务并以root用户身份登录时使用以下命令 . 还要确保postgres用户没有登录到另一个会话:
最后输入
echo $PGDATA
确保你的PGDATA变量设置正确,输出类似于:如果未设置,或显示与预期不同的内容,请检查启动或RC文件,例如.profile或.bash.rc - 这将根据您的操作系统和shell而有很大差异 . 确定机器的正确启动脚本后,可以插入以下内容:
对于我的系统,我将其放在
/etc/profile.d/profile.local.sh
中,以便所有用户都可以访问它 .你现在应该像往常一样初始化数据库,你的所有psql路径设置应该是正确的!
如果要保留默认配置但希望对一个特定用户/数据库连接使用套接字连接进行md5身份验证,请在“本地所有/所有”行之前添加“本地”行:
问题仍然是你的
pg_hba.conf
文件(/etc/postgresql/9.1/main/pg_hba.conf*) . 这一行:应该
*如果找不到此文件,运行
locate pg_hba.conf
应显示文件的位置 .更改此文件后,请在Linux上,这将是
sudo service postgresql restart
.这些是根据official PostgreSQL docs on authentication methods对这两个选项的简要描述 .
对等身份验证
密码验证
pg_hba.conf
的样本位置在pg_hba.conf中更改METHOD peer 到 trust (/etc/postgresql/9.1/main/pg_hba.conf |第85行)解决了这个问题 . 添加md5要求输入密码,因此如果需要避免使用密码,请使用 trust 而不是 md5 .
如果您尝试在Cloud 9中找到此文件,则可以执行此操作
按
I
编辑/插入,按ESC
3次,然后输入:wq
将保存文件并退出如果您遇到问题,则需要找到
pg_hba.conf
. 命令是:find / -name 'pg_hba.conf' 2>/dev/null
然后更改配置文件:
Postgresql 9.3
Postgresql 9.4
下一步是:重新启动数据库实例:
service postgresql-9.3 restart
如果您有任何问题,则需要再次设置密码:
ALTER USER db_user with password 'db_password';
我正在克隆服务器上移动数据目录,并且以postgres身份登录时遇到麻烦 . 重置像这样的postgres密码对我有用 .
root# su postgres postgres$ psql -U postgres psql (9.3.6) Type "help" for help. postgres=#\password Enter new password: Enter it again: postgres=#
你只需要设置METHOD来信任 .
并重新加载postgres服务器 .
Changes in pg_hba.conf dont require RESTART postgres server. just RELOAD.
这对我有用!!
就我而言:
So this will be changed to:
数据库管理登录由Unix域套接字本地所有postgres对等
This:
数据库管理登录由Unix域套接字本地所有postgres md5
$> sudo service postgresql restart
以下是用于连接postgres的METHODS列表:
Note: 如果您尚未创建postgres用户 . 创建它,现在您可以使用该用户凭据访问postgres服务器 .
TIP: 如果在postgres重启后它不起作用,则关闭终端并再次打开 .
如果您在使用rails时遇到此问题,并且您知道已经使用密码创建了该用户名以及正确的权限,那么您只需要将以下内容放在database.yml文件的末尾 .
整体文件如下所示
您根本不需要触摸
pg_hba.conf
文件 . 快乐的编码安装Postgresql后,我做了以下步骤 .
pg_hba.conf
它将在/etc/postgresql/9.x/main
并更改此行:至
pg_hba.conf
至
重新启动postgresql服务器后,您可以使用自己的密码访问它
验证方法细节:
供进一步参考check here