1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

zabbix 5.0 初回セットアップ時に「Cannot connect to the database. Error connecting to database.」というエラーが出て進めない(postgresql)

Posted at

以下エラーが出てしまい、セットアップが先に進めなくなってしまった場合の対処となります。

eror内容
Cannot connect to the database.
Error connecting to database.

image.png

TL;DR

/etc/hostsのIPv6行をコメントアウトしたら問題なくなりました。

/etc/hosts(修正後)
[root@cent79-01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
# ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@cent79-01 ~]#

状況

発生環境としては以下の状況です。

項目 内容
OS CentOS 7.9
Zabbix version 5.0 LTS
Database postgresql 9.2
zabbix user zabbix
database user zabbix

また、postgresql側の認証設定(pg_hba.conf)は以下のように、IPv4系のものをmd5認証に変更しています。
#認証形式をtruthにしてもよかったのですが、さすがにセキュリティガバガバなのでMETHODをパスワード認証(md5)方式に変更しております。

pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
# local   all             all                                     peer
local   all             all                                     md5
# IPv4 local connections:
# host    all             all             127.0.0.1/32            ident
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 ident

確認

zabbix側から調査するのは複合的となり難しいため、postgresql標準のpsqlコマンドで接続可能かを確認しました。
その結果、以下のことがわかりました。

psql接続オプションなし(postgresqlローカル接続)をした際には接続できる。
psql接続オプションでローカルホスト(localhost)を指定した際には、Ident認証で失敗する。
psql接続オプションでIPv4ローカルアドレス(127.0.0.1)で接続した際には接続できる。

psql接続
[root@cent79-01 ~]# psql -U zabbix
ユーザ zabbix のパスワード:
### 接続成功 ###

[root@cent79-01 ~]# psql -U zabbix -h localhost
psql: FATAL:  ユーザ"zabbix"のIdent認証に失敗しました
### Ident認証で接続NG ###

[root@cent79-01 ~]# psql -U zabbix -h 127.0.0.1
ユーザ zabbix のパスワード:
### 接続成功 ###

ここで、postgresql認証ファイル(pg_hba.conf)の内容と見比べてみたところ、現在の認証設定でIdent認証となっているのはIPv6だけなので、zabbix初回セットアップのlocalhostはIPv6で接続しているという被疑が浮上しました。

localhost接続時のIPv6制限

ホスト名のlocalhostがIPv6ローカルアドレスの::1に変換されるのは、古典的ファイル/etc/hostsファイルの記述に従っていますので、こちらのIPv6レコードをコメントアウトして動作が変わるかを確認します。

/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

↓

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
# ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

再度、psqlコマンドで接続したところ、localhost指定接続でも問題なく接続できることが確認できました。

psql接続
[root@cent79-01 ~]# psql -U zabbix -h localhost
ユーザ zabbix のパスワード:
### 接続成功 ###

また、zabbixセットアップ画面も問題なく次のページへ遷移することが出来ました。
image.png

#IPv4ローカルアドレスとIPv6ローカルアドレスの名前解決優先度を変更する方法もありますが、今回は確認しておりません。
詳しくは/etc/gai.confあたりで検索してみてください。

後記

今回はzabbixセットアップ画面をなるべく修正しないため、/etc/hosts側を修正しましたが、この変更による影響が別に発生する可能性もありますので、そもそもDatabase host127.0.0.1を設定するか、インターフェースアドレスを記載することの方が有効だと思います。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?