ZabbixのAdminパスワードリカバリー
自宅のインターネット回線をOCNからNuro光に切り替えるにあたり、久しぶりに自宅ZabbixサーバのWebにアクセスしようとしたところ、Adminのパスワードを記憶しているブラウザが絶滅していた…ので、リカバリーした記録を残しときます。
公式の情報から、MySQLのrootでリセット可能なことはわかりましたが、こんな状態なので当然、そんなもの覚えているわけがありません。そこで、MySQLのrootパスワードリセットから旅は始まります。
初期状態の確認
OSのバージョン
[root@srv01 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
MySQLのバージョン
[root@srv01 ~]# mysqld --version
/usr/sbin/mysqld Ver 8.0.18 for Linux on x86_64 (MySQL Community Server - GPL)
作業手順
1) ZabbixとMySQLを停止
[root@srv01 ~]# systemctl stop zabbix-server
[root@srv01 ~]# systemctl stop mysqld
2) MySQLを認証なしでログインできるモードで起動
[root@srv01 ~]# systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
[root@srv01 ~]# systemctl start mysqld
3) MySQLにログインして、rootのパスワードをNULLに変更
[root@srv01 ~]# mysql -u root
mysql > UPDATE mysql.user SET authentication_string=null WHERE User='root';
mysql > EXIT;
4) MySQLを原状復帰(認証なしではログインできないように)して再起動
[root@srv01 ~]# systemctl unset-environment MYSQLD_OPTS
[root@srv01 ~]# systemctl start mysqld
5) MySQLにroot(パスワード無し)でログインして、パスワードを設定
[root@srv01 ~]# mysql -u root
mysql > ALTER USER 'root'@'localhost' IDENTIFIED BY 'ほげほげ';
mysql > FLUSH PRIVILEGES;
mysql > EXIT;
6) ZabbixのAdminパスワードの初期化
[root@srv01 ~]# mysql -uroot -p zabbix
mysql> UPDATE users SET passwd = 'ZabbixのAdminパスワード' WHERE alias = 'Admin';
mysql > FLUSH PRIVILEGES;
mysql > EXIT;
7) zabbix-serverの起動もお忘れなく!
[root@srv01 ~]# systemctl start zabbix-server
さいごに
Net上の皆様の英知を集結して、なんとかリカバリーに成功することができました。特に、最初にMySQLのモードを変更するときのコマンドとして、以下の記述がされているサイトが多く、当初は"command not found"になってしまい途方に暮れておりました。どうもありがとうございました。
[root@srv01 ~]# mysqld_safe --skip-grant-tables &