MySQL の文字コードを UTF8 に変更する

MySQL 5.7 で文字コードを UTF8 に変更する手順をご紹介します。

MySQL

文字コードを show variables で確認

まず、現在の文字コードを show variables like ‘character_set%’; コマンドで確認します。

mysql> show variables like 'character_set%';
+--------------------------+------------------------------------------------------+
| Variable_name            | Value                                                |
+--------------------------+------------------------------------------------------+
| character_set_client     | latin1                                               |
| character_set_connection | latin1                                               |
| character_set_database   | utf8                                                 |
| character_set_filesystem | binary                                               |
| character_set_results    | latin1                                               |
| character_set_server     | utf8                                                 |
| character_set_system     | utf8                                                 |
| character_sets_dir       | /usr/local/Cellar/mysql/5.7.17/share/mysql/charsets/ |
+--------------------------+------------------------------------------------------+
8 rows in set (0.02 sec)

my.cnf に character_set_* を UTF8 にする設定を追記

次に MySQL の設定ファイル my.cnf に文字コードを UTF8 にする設定を追記します。

以下のような設定を追記してあげれば OK です。

[mysqld]
# character_set
character-set-server = utf8
 
[mysql]
default-character-set = utf8

MySQL を restart して設定確認

最後に MySQL を再起動して設定反映しましょう。

Linux で再起動する場合

$ service mysqld restart
$ /etc/init.d/mysqld restart

macOS で再起動する場合

$ brew services restart mysql
Stopping `mysql`... (might take a while)
==> Successfully stopped `mysql` (label: homebrew.mxcl.mysql)
==> Successfully started `mysql` (label: homebrew.mxcl.mysql)
mysql> show variables like 'character_set%';
+--------------------------+------------------------------------------------------+
| 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/local/Cellar/mysql/5.7.17/share/mysql/charsets/ |
+--------------------------+------------------------------------------------------+
8 rows in set (0.01 sec)

文字コードの問題にぶつかる前に、最初から UTF8 に設定しておくと安心ですね。

参考情報