我得到了错误:
FATAL: Peer authentication failed for user "postgres"
当我尝试让postgres与Rails一起工作时。
这是pg_hba.conf,我的数据库。Yml,以及完整跟踪的转储。
我在pg_hba中将身份验证更改为md5,并尝试了不同的方法,但似乎都不起作用。
我还尝试按照Rails 3.2创建一个新用户和数据库,FATAL: Peer authentication failed for user (PG::Error)
但是它们不会在pgadmin上显示,甚至当我运行sudo -u postgres psql -l时也不会显示。
知道我哪里错了吗?
请按照以下步骤操作
1).首先,进入/etc/postgresql/{你的pg版本}/main目录。
我的版本是10
cd /etc/postgresql/10/main
2).这里驻留pg_hba.conf文件需要在这里做一些更改,你可能需要
Sudo访问此。
sudo nano pg_hba.conf
3).向下滚动文件,直到你找到这个-
# Database administrative login by Unix domain socket
local all postgres peer
4).此处修改peer为md5,如下所示。
# Database administrative login by Unix domain socket
local all all md5
peer表示它信任UNIX用户的真实性,因此不信任
提示输入密码。Md5意味着它总是会要求输入密码,
并在MD5散列后进行验证。
5).现在保存文件并重新启动Postgres服务器。
sudo service postgresql restart
现在应该没问题了。
如果您通过localhost(127.0.0.1)连接,则不应该遇到这个特定问题。我不会对pg_hba.conf做太多的改动,但我会调整你的连接字符串:
psql -U someuser -h 127.0.0.1 database
其中someuser是你连接的用户,database是你的用户有权限连接的数据库。
下面是我在Debian上设置postgres的方法:
http://www.postgresql.org/download/linux/debian/ (Wheezy 7.x)
as root …
root@www0:~# echo "deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main" >> /etc/apt/sources.list
root@www0:~# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
root@www0:~# apt-get update
root@www0:~# apt-get install postgresql-9.4
root@www0:~# su - postgres
postgres@www0:~$ createuser --interactive -P someuser
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
postgres@www0:~$ createdb -O someuser database
postgres@www0:~$ psql -U someuser -h 127.0.0.1 database
享受吧!