通过ansible创建的PostgreSQL用户无法登录

时间:2019-03-05 12:42:18

标签: postgresql ansible

通常,我会创建像这样的postgresql用户。

sudo -u postgres psql
create user deploy_sample with password 'secret';
create database deploy_sample_production owner deploy_sample;

我尝试通过此任务通过ansible脚本创建用户

  - name: Create database user
    become: yes
    become_user: postgres
    postgresql_user: 
      user: user123 
      password: password123
      encrypted: yes
      state: present

这确实创建了一个用户,但我无法使用凭据登录。

我尝试使用此命令psql --username=user123 --password登录。我收到peer authenticate failuer错误。

1 个答案:

答案 0 :(得分:0)

一个可行的配置看起来是正确的,并且可能与该问题无关。

通过该消息,我们可以看到它正在尝试使用 Peer身份验证方法登录。这意味着O.S.使用用户而不是提供的密码来连接数据库(请参见:https://www.postgresql.org/docs/10/auth-methods.html

您应该看的两件事:

  • 您的auth方法如何配置?

它在文件{data dir}/pg_hba.conf

可能所有的本地连接都配置为使用对等方(注意,这是两种类型的本地连接,一种称为 local =通过unix套接字进行连接,另一种是主机127.0 .0.1 / 32 =使用网络访问本地主机)。

我将第二个更改为使用 md5 方法,这样您将能够通过网络与用户/通道连接,但仍使用对等方进行本地连接-对系统用户有用< strong> postgres

  • 使用网络与应用程序用户连接

psql --username=user123 --password->默认情况下,PSQL程序将尝试使用本地连接,这意味着使用对等身份验证。您可能在系统上没有用户 user123 ,因此将失败!

psql -h localhost --username=user123 -d <database>->这样,您将使用网络连接到本地计算机,从而允许使用密码进行身份验证。