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画面で無事ログインできたので、[管理]-[ユーザー]から該当ユーザーに対して、
パスワード変更を忘れずに実施しました。
パスワードマネージャーなどで記憶させるなど、ちゃんと対応しておかないとですね。