はじめに
metabaseとは、気軽に導入できるのが特徴のオープンソースのBIツール(データ可視化ツール)です。
今回はmetabaseのDBファイルを覗いてみる機会があったので、その備忘録として記事を残しておきます。
背景
metabaseのDB調査が必要になった経緯はこんな感じです。
・metabaseはローカルPCで試験的に運用
・ある日metabaseにログインできなくなった
・LDAPサーバーに変更があり、認証ができなくなったと判明
・復旧しようにも管理アカウントのIDは不明
・SMTP設定がされていないため、リセットメールの送信も不可
なかなかな状況ですが、DBファイルを覗ければなんとか復旧できるかもしれません。
試しにやってみましょうとなりました。
DBファイルの構造
DBファイルはmetabaseのルートフォルダの下に保存されています。
└metabase.db
├ metabase.db.mv.db
└ metabase.db.trace.db
metabaseのDBは、デフォルトではH2という形式が使われています。
H2のコンソールを入手
H2のDBを開くためにはH2のコンソールを入手しましょう。
公式サイトからダウンロードができます。
実行にはJAVAのインストールが必要です。事前に用意しておいてください。
インストーラを使ってもいいですが、今回はZIPを使用することにしました。
DLして展開できたらbinフォルダにある「h2-X.X.XXX.jar」を起動するとコンソールが立ち上がります(Xの部分にはバージョン番号が入ります)
ここで要注意なのが、metabaseで使われているH2とコンソールのバージョンを合わせる必要があるということです。
うまくいかない場合は、H2公式サイトの「Archive Downloads」から適合するバージョンを探してください。
H2のDBに接続する
コンソールが立ち上がったら、DBを開くために各種の設定を入れていきます。
JDBC URLには上記の構造で挙げたmetabase.dbフォルダのパスをfile:の形式で指定します。
metabase.db.mv.dbファイルのパスではないので注意!
ここでパス指定をミスると、新規作成扱いになり、シレッと空のテーブルが開かれてしまうので気をつけましょう。
ユーザ名・パスワードを入力して、「接続」を押して進みましょう。
ここでのユーザ名・パスワードはmetabase自体のものではなく、H2のDBに設定されているもので、
metabaseのデフォルト状態では空になっています。
DBから必要な情報を得る・操作する
接続したらDBの各種テーブルが閲覧できます。
左のテーブル一覧から開きたいテーブルを選ぶとクエリが補間されるので「実行」します。
今回のようなケースの場合、目的のデータは「SETTING」にあり、基本設定が保存されています。
ここからSMTPの設定やLDAPの設定を得ることができます。
また「CORE_USER」で登録されているユーザーの一覧を見ることができます。
どんなアカウントがあるかや設定されたメールアドレスを確認できます。
(パスワードはハッシュで保存されているので直接は見れません)
クエリに必要な情報を記述して実行し、復旧のための情報を書き換えたら、作業完了です。