通过psycopg2以root身份连接PostgreSQL
我正在尝试使用 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")