MySQL 8 のデフォルト文字セット系をすべて utf8mb4 にする cnf の書き方メモ

スポンサードリンク


まとめ

[mysql]
default-character-set=utf8mb4

[mysqld]
character_set_server=utf8mb4
collation-server=utf8mb4_bin
  • [mysql] の default-character-set=utf8mb4 で変更される項目
    • character_set_client: latin1 -> utf8mb4
    • character_set_connection: latin1 -> utf8mb4
    • character_set_results: latin1 -> utf8mb4
  • [mysqld] の character_set_server=utf8mb4 で変更される項目
    • character_set_database: utf8mb4 -> utf8mb4
    • character_set_server: utf8mb4 -> utf8mb4
  • [mysqld] の collation-server=utf8mb4_bin で変更される項目
    • collation_database: utf8mb4_0900_ai_ci -> utf8mb4_bin

結果

mysql> SELECT version();
+-----------+
| version() |
+-----------+
| 8.0.12    |
+-----------+
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE "chara%";
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8                           |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.01 sec)

mysql> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4                  | utf8mb4_bin          |
+--------------------------+----------------------+
1 row in set (0.00 sec)

mysql> 

補足。 MySQL 8.0.1 以降では character_set_database と character_set_server の値はデフォルトで utf8mb4

補足。 MySQL 8.0.1 以降では collation-server のデフォルト値は utf8mb4_0900_ai_ci

したがって、MySQL 8 では character_set_server の設定は不要ではあります。
明示的に揃えたいといった、今回のようなパターンでは、設定しておいて損はないでしょう。

補足。 character_set_system の値は utf8 固定

The character set used by the server for storing identifiers. The value is always utf8.

おわりに

MySQL へ接続する Laravel 等のアプリで、文字コードの設定がおかしいために失敗するという、イラっとする系のミスをいつもしますので、メモいたしました。

もしかしたら、本ブログの過去の投稿で、全く同じ内容があるかもしれませんが、気にせずメモいたします。

次のページが参考になりました。ありがとうございます!

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です