[さくっと] dockerでお気軽mysql [日本語対応]

# 趣旨

[dockerでお気軽mysql](http://qiita.com/iganari/items/3755666c2a7f56872c64)

上記の続きです。

お気軽mysqlはdbが日本語入力に対応していません。
また環境変数の関係でそもそもコンソールが日本語を受け付けません。

結論としては自分で手を入れてあげないといけないので、githubにrepoを作成しました。

+ github

[iganari/mysql-server-utf8](https://github.com/iganari/mysql-server-utf8)

+ docker hub

[igaguri/mysql-server-utf8](https://hub.docker.com/r/igaguri/mysql-server-utf8/)

+ コマンド(立ち上げ)

```text:cmd
$ docker run --name iganari-db -e MYSQL_ROOT_PASSWORD=hogehoge -d igaguri/mysql-server-utf8
```

+ コマンド(mysqlログイン)

```text:cmd
$ docker exec -it iganari-db mysql -uroot -phogehoge
```



# 対応方法など

### Dockerのコンテナで日本語を受け付けるようにする。

以下が参考になります。

[「dockerのコンテナ実行時にLANGなどの環境変数を設定する方法」のコメント](http://qiita.com/yuki2006/items/6cea8c352e38f047b52a#comment-8e863c71962008035d0d)

要は以下をDockerfile内に書いてbuildします。
hub.dockerの[mysql/mysql-server](https://hub.docker.com/r/mysql/mysql-server/)の大元は[github](https://github.com/mysql/mysql-docker)を確認すると、[oraclelinux](https://hub.docker.com/_/oraclelinux/)を参照しているよう。
したがって、今回はcentosケースで設定出来ます。

+ centos

```text:Dockerfile
FROM centos

RUN yum -y reinstall glibc-common
RUN localedef -v -c -i ja_JP -f UTF-8 ja_JP.UTF-8; echo "";

env LANG=ja_JP.UTF-8
RUN rm -f /etc/localtime
RUN ln -fs /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```

+ ubuntu

```text:Dockerfile
RUN locale-gen ja_JP.UTF-8  
ENV LANG ja_JP.UTF-8  
ENV LANGUAGE ja_JP:en  
ENV LC_ALL ja_JP.UTF-8  
```

### mysqlを日本語対応にする

こちらに関してはいつも通りにmy.cnfに設定していきます。
OSが違うと設定ファイルの場所が違いますが、
追記する最低限の内容は変わらないのでそこはよしなに変換して下さい。


+ mysql設定をutf8にする

```text:/etc/my.cnf
### 以下を追記する

[mysqld]
…
…
…
+ character-set-server=utf8

+ [client]
+ default-character-set=utf8
```

以上の設定を読み込めば、日本語の対応したMySQLが使えるようになります。

# デモ(というかメモ)



```
$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
igaguri/mysql-server-utf8   latest              707b002e4acc        5 weeks ago         1.055 GB
$ 
$ 
$ docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                 NAMES
7ae484154570        igaguri/mysql-server-utf8   "/entrypoint.sh mysql"   10 seconds ago      Up 9 seconds        3306/tcp, 33060/tcp   iganari-db
$ 
$ 
$ docker exec -it iganari-db mysql -uroot -phogehoge
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.17 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql>
```