dockerのmysqlの文字コードをutf8にする方法

久々にdockerでwordpressを立ち上げて、dockerのdbの中を見ようとしたら日本語が文字化けしまくり。

mysql> show variables like '%chara%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

はい、全てlatin1になってます。

てことで、毎度の如くググると、色んな方法が有る。

docker-compose.ymlの中でcommandオプションを使ってserver側の文字コードを変更出来るらしい。
でも、clientは変更出来ない。

さて、どうしようと思ったら、普通にmy.cnfをホスト側に作ってvolumesでマウント?すれば良いだけらしい。

docker-compose.ymlのdbの部分

  db:
    image: mysql:latest
    env_file: .env
    volumes:
      - db-data:/var/lib/mysql
      - ./my.cnf:/etc/mysql/conf.d/my.cnf

これで起動したところ

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

うむ、上手くいった。

コメント

タイトルとURLをコピーしました