通常,我会创建像这样的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
错误。
答案 0 :(得分:0)
一个可行的配置看起来是正确的,并且可能与该问题无关。
通过该消息,我们可以看到它正在尝试使用 Peer身份验证方法登录。这意味着O.S.使用用户而不是提供的密码来连接数据库(请参见:https://www.postgresql.org/docs/10/auth-methods.html)
您应该看的两件事:
它在文件{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>
->这样,您将使用网络连接到本地计算机,从而允许使用密码进行身份验证。