Postgresql 和 OpenBSD 第一次连接

rem*_*dev 6 postgresql openbsd

我不明白 Postgres 如何与 openBSD 一起工作。我在 debian 上没有遇到这些问题(我不必执行 initdb)。

我做了如下

pkg_add postgresql-server php-pgsql
su - _postgresql
initdb -D /var/postgresql/data -U postgres - E UTF8 -A md5 -W
Run Code Online (Sandbox Code Playgroud)

但在那之后,我没有得到我期望的结果

我可以启动数据库

 pg_ctl -D /var/postgresql/data/ -l logfile start
Run Code Online (Sandbox Code Playgroud)

或与

 rcctl enable postgresql 
 rcctl start postgresql 
Run Code Online (Sandbox Code Playgroud)

但我不明白如何连接到它

因为如果我这样做:

# su - _postgresql        
$ psql
Password: 
psql: FATAL:  password authentication failed for user "_postgresql"
Run Code Online (Sandbox Code Playgroud)

为什么是 _postgresql 用户而不是 postgres?我应该使用哪个密码?

这是pg_hba.conf,我改了结尾,

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            
password
# IPv6 local connections:
host    all             all             ::1/128                 md5
Run Code Online (Sandbox Code Playgroud)

因此,我想,我已经登录了,但我遇到了一个新问题,确实有一些我不明白的事情

$ pg_ctl -D /var/postgresql/data/ -l logfile stop 
waiting for server to shut down.... done
server stopped
$ pg_ctl -D /var/postgresql/data/ -l logfile start
server starting
$ psql
psql: FATAL:  role "_postgresql" does not exist
Run Code Online (Sandbox Code Playgroud)

谢谢

rem*_*dev 4

所以创建新数据库时的正常情况是

与用户一起

su - _postgresql


initdb -D /var/postgresql/data -U postgres -k -E UTF8 -A md5 -W
Run Code Online (Sandbox Code Playgroud)

你必须选择一个密码

启动数据库

pg_ctl -D /var/postgresql/data/ -l logfile start
Run Code Online (Sandbox Code Playgroud)

您可以轻松登录

psql -U postgres
Run Code Online (Sandbox Code Playgroud)

但如果它不起作用,我想我密码有误

与用户一起

su - _postgresql
Run Code Online (Sandbox Code Playgroud)

首先我需要将 ph_hba.conf 更改为信任

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
Run Code Online (Sandbox Code Playgroud)

所以当我启动数据库时

pg_ctl -D /var/postgresql/data/ -l logfile start
Run Code Online (Sandbox Code Playgroud)

这样我就可以使用 postgres 用户登录

psql -U postgres
Run Code Online (Sandbox Code Playgroud)

最后更改密码

ALTER USER postgres WITH PASSWORD '123';
Run Code Online (Sandbox Code Playgroud)

不要忘记最后的“;”!

更改 pg_hba.conf 文件首先我需要将 ph_hba.conf 更改为密码(或者可能是 MD5)

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                   password
Run Code Online (Sandbox Code Playgroud)

并重新启动

pg_ctl -D /var/postgresql/data/ -l logfile stop
pg_ctl -D /var/postgresql/data/ -l logfile start
Run Code Online (Sandbox Code Playgroud)

我终于可以正常登录了

psql -U postgres
Run Code Online (Sandbox Code Playgroud)