参考:https://stackoverflow.com/questions/42548285/cant-connect-to-postgres-on-centos-with-psycopg
I've downloaded postgres on centos, created a database, created a user with a password, restarted postgres, checked the user in pg_authid, done it again, and I still can't connect.
Why can't I connect?
postgres=# create database test;
CREATE DATABASE
postgres=# create user test with password 'test';
CREATE ROLE
postgres=# grant all privileges on database test to test;
GRANT
postgres=# select * from pg_authid where rolname = 'test';
rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolconnlimit | rolpassword | rolvaliduntil
---------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------+-------------------------------------+---------------
test | f | t | f | f | f | t | f | -1 | md505a671c66aefea124cc08b76ea6d30bb |
(1 row)
postgres=# alter user test with password 'test';
ALTER ROLE
In the midst of this, I've sudo service postgresql restart
multiple times, but am still getting this:
>>> conn = psycopg2.connect(host="127.0.0.1", port="5432", dbname="test", user="test", password="test")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: FATAL: Ident authentication failed for user "test"
I'm out of ideas :(
EDIT:
I also tried changing
# "local" is for Unix domain socket connections only
local all all peer
to
# "local" is for Unix domain socket connections only
local all all trust
![](https://i-blog.csdnimg.cn/blog_migrate/b15bcf0396bad93a34aef479dfcc5968.png)