LoginSignup
5
12

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-14

趣旨

dockerでお気軽mysql

上記の続きです。

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

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

  • github

iganari/mysql-server-utf8

  • docker hub

igaguri/mysql-server-utf8

  • コマンド(立ち上げ)
cmd
$ docker run --name iganari-db -e MYSQL_ROOT_PASSWORD=hogehoge -d igaguri/mysql-server-utf8
  • コマンド(mysqlログイン)
cmd
$ docker exec -it iganari-db mysql -uroot -phogehoge

対応方法など

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

以下が参考になります。

「dockerのコンテナ実行時にLANGなどの環境変数を設定する方法」のコメント

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

  • centos
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
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にする
/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>
5
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
12