Zabbix 6.0 でパスワードを忘れてしまいました。

年末に試してみようと思い、コンテナにZabbix 6.0をインストールしました。
今月になって設定をしていこうと思ったところ、管理者パスワードを忘れてしまい、
ログインができない状況になってしまいました。

ネットで検索するとmysqlにログインし、zabbix.usersテーブルに対して、 パスワードを初期化可能と記載されていたのですが、Zabbix 6.0の自分の環境では
「ERROR 1054 (42S22): Unknown column 'alias' in 'where clause'」
とエラーが発生しました。

エラーの内容から、SQL文でWhere句に指定した「alias」というカラムがない
ということは分かったので対応を進めていきます。

実行した手順

1)MySQL に接続できる環境にログインします。
 自分の環境では、zabbixやmysqlをコンテナに構築しているため、
 今回はzabbix serverに接続します。

 root@rocky # docker exec -it zabbix_server /bin/bash  
 root@zabbix_server #

2)MySQLにログインします。
 以下の例では、事前にDB_ADDRにMySQLサーバのIPアドレスを指定しています。
 MySQLのrootのパスワードをコンソールに入力する形となります。
 MySQLのrootパスワードは覚えていたので、助かりました…

 root@zabbix_server # mysql -h ${DB_ADDR} -uroot -p

3)ユーザーテーブルで管理者名やログイン失敗回数を確認します。  以下の例では、「attempt_failed」カラムで5回失敗していることと、
 管理者ユーザー名は「admin」で設定されていることを確認しています。

 mysql> select username,attempt_failed,attempt_ip,passwd from zabbix.users;  
 +----------+----------------+---------------+---------------------------+  
 | username | attempt_failed | attempt_ip    | passwd                    |  
 +----------+----------------+---------------+---------------------------+  
 | admin    |              5 | 192.168.0.1   | {暗号化文字列 1}          |  
 | guest    |              0 |               | {暗号化文字列 2}          |  
 +----------+----------------+---------------+---------------------------+  
 2 rows in set (0.00 sec)  

4)パスワードの初期化を実施してみます。
 参考にさせていただいた情報だと「passwd」に「d41d8cd98f00b204e9800998ecf8427e」を
 セットするとパスワードは空白文字列になるそうです。
 以下のように「admin」のパスワードを初期化しましたが、エラーが発生しました。

 mysql> update users set passwd = "d41d8cd98f00b204e9800998ecf8427e" where alias="admin";  
 ERROR 1054 (42S22): Unknown column 'alias' in 'where clause'  

 テーブルのカラム名がusernameで、値が「admin」の行を更新すればいいのではと、
 SQL文を変更して、パスワードとログイン失敗回数値の初期化を実施します。
 Query OKと表示されたので、MySQL的には問題なさそうです。

 mysql> update zabbix.users set passwd='d41d8cd98f00b204e9800998ecf8427e' where **userName**='admin';  
 Query OK, 1 row affected (0.00 sec)  
 Rows matched: 1  Changed: 1  Warnings: 0  
 mysql>  
 mysql> update zabbix.users set attempt_failed=0 where **userName**='admin';  
 Query OK, 1 row affected (0.00 sec)
 Rows matched: 1  Changed: 1  Warnings: 0

5)Zabbixでログイン確認をします。
 Web画面で無事ログインできたので、[管理]-[ユーザー]から該当ユーザーに対して、
 パスワード変更を忘れずに実施しました。

パスワードマネージャーなどで記憶させるなど、ちゃんと対応しておかないとですね。