dockerでmysqlコンテナを立てる時の設定 my.cnf


dockerでmysqlコンテナを立てる時の設定 my.cnf

mysqlのconf について学ぶ。

ざっと出すとこんな感じ

[mysqld]
skip-host-cache
skip-name-resolve
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

mysql server, clientの設定がそれぞれ書いてある。

server 設定 mysqld

skip-host-cache

[https://www.na3.jp/entry/20140205/p1:embed:cite]

[https://dev.mysql.com/doc/refman/5.6/ja/host-cache.html:title]

これはDNSのキャッシュ戦略機能をオフにする宣言。

ipアドレスから引かれたホスト名がすでにキャッシュされている時にそれを使い回す機能があるそう。

docker-composeでコンテナを立てる場合、docker networkがよしなにprivate ipを当ててくれるからわざわざdnsで名前解決しなくていい。

skip-name-resolve

[http://gihyo.jp/dev/serial/01/mysql-road-construction-news/0028:embed:cite]

[https://dev.mysql.com/doc/refman/5.6/ja/host-cache.html:title]

これも同様にDNSの名前引きを飛ばす設定。

character-set-server=utf8mb4

mb4 がポイント。

mysqlのutf8は1-3byte文字しか扱えない。

iOS, Androidの絵文字, 最近追加された難しい日本語や中国語は4byteあるためこれらの文字列を格納しようとするとエラーが起きる。

そこで utf8mb4を使う。

[https://flhouse.co.jp/article/2/utf8mb4:embed:cite]

clientも同じ