使用 psycopg2 连接到 gitlab 生产 postgresql 数据库?

Connect to gitlab production postgresql database with psycopg2?

我正在尝试使用 psycopg2 连接到 GitLab 生产环境(使用 omnibus 软件包安装)postgresql 数据库。

我的配置如下:

onn = psycopg2.connect(database="gitlabhq_production", user="gitlab-psql", host="/var/opt/gitlab/postgresql", port="5432")

它给出了以下错误:

FATAL:  Peer authentication failed for user "gitlab-psql"

我可以通过命令行连接到 postgresql 服务器:

sudo -u gitlab-psql -i bash /opt/gitlab/embedded/bin/psql --port 5432 -h /var/opt/gitlab/postgresql -d gitlabhq_production

有谁知道要传入的正确参数是什么?

对等身份验证通过检查进程正在 运行 的用户来工作。在您的命令行示例中,您使用 sudo.

切换到 gitlab-psql

有两种方法可以解决这个问题:

  1. gitlab-psql postgres 用户分配密码(不是 系统用户!)并使用它通过 python 连接.设置密码只是您作为超级用户需要 运行 的另一个查询,如下所示:

    sudo -u postgres psql -c "ALTER USER gitlab-psql WITH PASSWORD 'ReplaceThisWithYourLongAndSecurePassword';"
    
  2. 运行 你的 python 脚本像这样 gitlab-psql:

    sudo -u gitlab-psql python /path/to/your/script.py