通过psycopg2以root身份连接PostgreSQL

2 投票
1 回答
1071 浏览
提问于 2025-04-18 11:54

我正在尝试使用 supervisord 来运行一个 Python 服务,这个服务需要以管理员身份运行(也就是用 sudo supervisorctl)。这个 Python 服务试图通过 psycopg2 连接到 PostgreSQL,连接的方式大致是这样的:

conn = psycopg2.connect("dbname=db_name user=user_name")

但是在执行时,我收到了一个错误提示 FATAL: Peer authentication failed for user "user_name"。我也尝试过

conn = psycopg2.connect("dbname=db_name user=postgres")

但仍然收到了同样的错误信息。从命令行来看,我可以用 sudo -u postgres psql db_name 来正常连接,结果也很正常。而用 sudo -u user_name psql db_name 也能成功。

简单来说,我想弄明白当 Python 进程以管理员身份运行时,如何使用 psycopg2 连接到 PostgreSQL。

1 个回答

2

解决办法是指定主机,这样 psycopg2 就不会使用套接字了:

conn = psycopg2.connect(database="dbname", user="username", host="127.0.0.1")

撰写回答