metabaseをmysqlで動かす

#metabaseにトライ
ここ2年くらいで盛り上がってきたセルフBI系のツールであるmetabaseが使いやすいみたいなので、セットアップしてみました。

スタンドアロンで動作させるとH2データベースに管理情報が保存されるため、拡張しにくい状態になります。ユーザ情報やダッシュボードの情報は複数のmetabaseサーバーから参照ができるように、mysqlに管理情報を保存するような形で動かしてみます。

#環境
初心者でも簡単に試せるようwindows環境に導入します。

##必要なもの
windows 7
java
mysql
metabase

javaとかmysqlとかのインストールは省略します。

#手順
##metabaseを入手
ここからmetabase.jarを取得しましょう
https://www.metabase.com/start/jar.html

C:/metabase/フォルダを作り、jarファイルを保存しました。

##管理用のデータベースを作成
metabaseが必要とするデータを入れるためのデータベースを新しく作成します。。これはVisualizeするためのデータではなくて、metabase管理用（ユーザとかクエリーとか保存するもの）です。

```
mysql -u root
CREATE DATABASE metabase DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON metabase.* TO metauser@localhost IDENTIFIED BY 'xxx';
```

データベース名はmetabaseとしていますが、ここは自由に変更してよいです。
metabaes起動時に管理用のテーブルを自動的に作成するので、少なくともテーブルが作成できる権限が必要です。metauserにALL PRIVILEGEを付けて手抜きしました。


##起動ファイルを作る
何も指定せずにjarファイルでmetabaseを動かすと、管理用データベースがH2で起動してしまいます。mysqlで動かすには環境変数を設定する必要があるので、起動ファイルを作ります。

c:/metabase/startmetabase.batとして、以下の内容をテキストエディタで書く

```bat:startmetabase.bat
chcp 65001
set MB_DB_TYPE=mysql
set MB_DB_DBNAME=metabase
set MB_DB_PORT=3306
set MB_DB_USER=metauser
set MB_DB_PASS=xxx
set MB_DB_HOST=localhost
java -jar c:/metabase/matabase.jar
```

chcp 65001はコマンドプロンプトをUTF-8にするおまじない
データベース名やユーザ名は、作った通りに合わせておいてください。
metabaseサーバーを2台以上で運用する場合には、localhostではなく情報を共有するデータベースホストを指定しましょう。

##metabase起動
ここまできたら、metabaseを起動します。
起動方法は、startmetabase.batを起動するだけです。コマンドプロンプトが立ち上がるので眺めましょう。このとき立ち上がったコマンドプロンプトを落とすと、metabaseも落ちるので気を付けてください。

こんなログが出たら、無事起動完了のはず。
windows7で動かしたのでコンソールの表示に変なの([1mとか[0mとか)が混ざってますが、気にしない。windows10だとキレイに出ます。

```
01-07 00:51:35  [1mINFO metabase.core [0m :: Please use the following url to setup your Metabase installation:

http://localhost:3000/setup/
```

##起動確認
http://localhost:3000/setup/ にアクセスすると初期画面が表示されます。Lets get startedボタンを押して、管理者登録へ移りましょう。

![screenshot-metabae1.png](https://qiita-image-store.s3.amazonaws.com/0/168315/bc8f5897-ca4c-b10a-77cd-dd87e8646507.png)


##mysqlのデータベース確認
念のため、metabaseデータベースに自動で作られたテーブルを見てみましょう。

```
mysql -u metauser -p metabase -e "show tables"
```

```
+------------------------------+
| Tables_in_metabase           |
+------------------------------+
| activity                     |
| card_label                   |
| collection                   |
| collection_revision          |
| computation_job              |
| computation_job_result       |
| core_session                 |
| core_user                    |
| dashboard_favorite           |
| dashboardcard_series         |
| data_migrations              |
| databasechangelog            |
| databasechangeloglock        |
| dependency                   |
| dimension                    |
| label                        |
| metabase_database            |
| metabase_field               |
| metabase_fieldvalues         |
| metabase_table               |
| metric                       |
| metric_important_field       |
| permissions                  |
| permissions_group            |
| permissions_group_membership |
| permissions_revision         |
| pulse                        |
| pulse_card                   |
| pulse_channel                |
| pulse_channel_recipient      |
| query                        |
| query_cache                  |
| query_execution              |
| raw_column                   |
| raw_table                    |
| report_card                  |
| report_cardfavorite          |
| report_dashboard             |
| report_dashboardcard         |
| revision                     |
| segment                      |
| setting                      |
| view_log                     |
+------------------------------+
```

2018年1月7日の最新のmetabaseでは43個のテーブルが作られるようです。

#マニュアル
mysqlで動かす方法は、こちらのマニュアルで見つけました。他にもいくつか環境変数で設定可能なものがあるようですので、調べてみてください。

https://metabase.com/docs/v0.14.1/operations-guide/start.html