docker環境でmysqlを立てた時に、日本語に対応するようにしたかった。
だからmy.cnfを記入して日本語に対応させようとしたんだけど、なんか反映されないわ意味わかってなかったわで沼にはまった。
環境は
- docker
- windows 10
- mysql 8.x
Table of Contents
原因1: my.cnfファイルは自分で作成しないといけない
まず、docker-composeのvolumeでmy.cnfをマウントするところから沼にはまった。
こんな書き方をしていた。
mysql:
container_name: {container name}
build: ./docker/mysql
tty: true
networks:
yamari_net:
aliases:
- mysql
ipv4_address: 172.31.0.3
expose:
- 3306
volumes:
- ./DBdata:/var/lib/mysql
- ./conf/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: {DBname}
Code language: JavaScript (javascript)
こうした時にmy.cnfは勝手に作られるもんだと僕は思っていたが大間違い。
/etc/mysql/conf.d/my.cnfの読み込み(コンテナ側)を./conf/mysql/my.cnfに当てる感じになるのだが、自分でファイルを作っていなかった。
なのでまず起きたこととしては、何も読み込み元を作っていなかったために、何もないということを読み込んでいたんですね。
ああ、ややこしい。
とりあえず、mount元となるファイル、フォルダを作っていないといけないわけです。
勝手に作ってくれるというのは大間違い!
ということでえっこらえっこらmy.cnfを自分で作ります。
原因2: windowsの権限管理
my.cnfを作ってdocker-compose up
!!!
したわけだけど、結局日本語対応になってねえじゃん….
よくよく調べてみれば、windowsが関係していたらしい。
my.cnfは読み取り専用じゃないといけないらしくそれができていなかった。
ということでエクスプローラーを開いて、my.cnfを右クリック>プロパティ
読み取り専用にチェックを入れます。
ほんで再起動させるとあら不思議、うまいこといっているじゃないですか!!
まとめ
- 問題1: 自分でマウント元のファイルを作る必要があった。
- 問題2: Windowsの関係で、my.cnfを「読み取り専用」にする必要があった
上記2点が問題でうまくいっていませんでした。
結構時間取られたんで、もう今後こんなことはないようにしたい….
助かりました!ありがとうございます
ありがとうございます。
お役に立ててよかったです!