See the Elephant

1992生まれのプログラマが書くエンジニアブログ

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

www.na3.jp

MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.11.5.2 DNS ルックアップの最適化とホストキャッシュ

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

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

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

skip-name-resolve

gihyo.jp

MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.11.5.2 DNS ルックアップの最適化とホストキャッシュ

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

character-set-server=utf8mb4

mb4 がポイント。

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

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

そこで utf8mb4を使う。

flhouse.co.jp

clientも同じ