简体   繁体   English

PostgreSQL - 用户“postgres”的对等身份验证失败

[英]PostgreSQL - Peer authentication failed for user “postgres”

I have a bot that runs on my Windows machine and I recently bought an Ubuntu virtual server.我有一个在我的 Windows 机器上运行的机器人,我最近购买了 Ubuntu 虚拟服务器。 After a series of like infinite errors, I just reset the server completely and retrying from scratch.在一系列类似的无限错误之后,我只是完全重置服务器并从头开始重试。 You can look here to see another post of some of my previous errors: no pg_hba.conf entry for host / Connect call failed / Invalid data directory for cluster 12 main - Postgresql Ubuntu您可以在这里查看我以前的一些错误的另一篇文章: 主机没有 pg_hba.conf 条目/连接调用失败/集群 12 主的数据目录无效 - Postgresql Ubuntu

So now when I try to start my bot, it gives me this error:所以现在当我尝试启动我的机器人时,它给了我这个错误:

Traceback (most recent call last):
  File "bot.py", line 950, in <module>
    bot.loop.run_until_complete(create_db_pool())
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "bot.py", line 160, in create_db_pool
    bot.pg_con = await asyncpg.create_pool(database='xxx', user='postgres', password='???')
  File "/usr/local/lib/python3.8/dist-packages/asyncpg/pool.py", line 398, in _async__init__
    await self._initialize()
  File "/usr/local/lib/python3.8/dist-packages/asyncpg/pool.py", line 426, in _initialize
    await first_ch.connect()
  File "/usr/local/lib/python3.8/dist-packages/asyncpg/pool.py", line 125, in connect
    self._con = await self._pool._get_new_connection()
  File "/usr/local/lib/python3.8/dist-packages/asyncpg/pool.py", line 468, in _get_new_connection
    con = await connection.connect(
  File "/usr/local/lib/python3.8/dist-packages/asyncpg/connection.py", line 1718, in connect
    return await connect_utils._connect(
  File "/usr/local/lib/python3.8/dist-packages/asyncpg/connect_utils.py", line 663, in _connect
    con = await _connect_addr(
  File "/usr/local/lib/python3.8/dist-packages/asyncpg/connect_utils.py", line 642, in _connect_addr
    await asyncio.wait_for(connected, timeout=timeout)
  File "/usr/lib/python3.8/asyncio/tasks.py", line 483, in wait_for
    return fut.result()
asyncpg.exceptions.InvalidAuthorizationSpecificationError: Peer authentication failed for user "postgres"

The database, user, and password are all correct though.数据库、用户和密码都是正确的。 It's working even right now as the bot is running on my Windows machine, which is why I think this is an Ubuntu specific issue.它现在仍在工作,因为该机器人正在我的 Windows 机器上运行,这就是为什么我认为这是 Ubuntu 特定问题的原因。 My listen addresses set to"我的收听地址设置为“

listen_addresses = '*'

pg_hba.conf on local windows server:本地 windows 服务器上的 pg_hba.conf:

# TYPE  DATABASE        USER            ADDRESS            METHOD

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5
# IPv6 local connections:
host    all             all             ::0/                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    replication     all             0.0.0.0/0            md5
host    replication     all             ::0/                 md5

and my pg_hba.conf on Ubuntu server set to:我在 Ubuntu 服务器上的 pg_hba.conf 设置为:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

If I change the first line from peer to md5 , I get:如果我将第一行从peer更改为md5 ,我会得到:

asyncpg.exceptions.InvalidPasswordError: password authentication failed for user "postgres"

and changing to trust says that there is no database xxx which is the database on my local Windows machine.并更改为trust表示没有数据库xxx ,这是我本地 Windows 机器上的数据库。 Typing ps ax | grep postgres打字ps ax | grep postgres ps ax | grep postgres shows: ps ax | grep postgres显示:

   9929 ?        Ss     0:02 /usr/lib/postgresql/12/bin/postgres -D /var/lib/pos           tgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf
   9931 ?        Ss     0:00 postgres: 12/main: checkpointer
   9932 ?        Ss     0:01 postgres: 12/main: background writer
   9933 ?        Ss     0:01 postgres: 12/main: walwriter
   9934 ?        Ss     0:01 postgres: 12/main: autovacuum launcher
   9935 ?        Ss     0:01 postgres: 12/main: stats collector
   9936 ?        Ss     0:00 postgres: 12/main: logical replication launcher
  21821 pts/0    S+     0:00 grep --color=auto postgres

I've been stuck on this for a really long time and I have no idea what to do.我已经坚持了很长时间,我不知道该怎么做。 I really hope someone knows the issue and I hope I've given enough information.我真的希望有人知道这个问题,我希望我已经提供了足够的信息。 Thank you.谢谢你。

I think its trying to connect to a database on the Ubuntu server instead of the database on my Windows machine.我认为它试图连接到 Ubuntu 服务器上的数据库,而不是我的 Windows 机器上的数据库。 How do I make it target the Windows machine?如何使其针对 Windows 机器?

client.pg_con = await asyncpg.create_pool(database=database, user=user, password=password, host="127.0.0.1")

Add host="127.0.0.1" as well, this solved my problem.也添加 host="127.0.0.1" ,这解决了我的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Postgresql psql:错误:致命:用户“userrole”的对等身份验证失败 - Postgresql psql: error: FATAL: Peer authentication failed for user "userrole" 用户“odoo”的对等身份验证失败 - Peer authentication failed for user “odoo” 用户 postgres 的 Psycopg2 对等身份验证 - Psycopg2 peer authentication for user postgres Postgresql - 用户密码验证失败 - Postgresql - password authentication failed for user 对等身份验证失败,docker 和 postgreSQL / Mac OS / Python - Peer authentication failed with docker and postgreSQL / Mac OS / Python postgresql:致命:用户“道格拉斯”的密码验证失败 - postgresql: FATAL: password authentication failed for user "douglas" 致命:运行 makemigrations 时用户“postgres”的密码身份验证失败 - FATAL: password authentication failed for user "postgres" while running makemigrations postgresql auth django(用户“BlogAdmin2”的密码认证失败) - postgresql auth django (password authentication failed for user "BlogAdmin2") 对于不同于dbuser的用户,postgresql ident身份验证失败 - postgresql ident authentication failed for user different than dbuser Django 错误:django.db.utils.OperationalError:致命:用户对等身份验证失败 - Django error: django.db.utils.OperationalError: FATAL: Peer authentication failed for user
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM