my.cnfファイル編集でサクッとUTF-8化!MySQLのデフォルト文字セット変更
MySQL のデフォルト文字セットを UTF-8 に変更するには、主に 2 つの方法があります。
- my.cnf ファイルの編集
- MySQL コマンドラインの利用
どちらの方法も比較的簡単ですが、my.cnf ファイルの編集の方が永続的な設定となります。
-
- Windows:
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
C:\Users\<ユーザー名>\.my.cnf
- Mac:
/etc/my.cnf
- Linux:
~/.my.cnf
- Windows:
[mysqld]
character-set-server=utf8
collation-server=utf8mb4_general_ci
- MySQL サーバを再起動する
mysql -u root -p
- 以下のコマンドを実行する
SET GLOBAL character_set_server = 'utf8';
SET GLOBAL collation_server = 'utf8mb4_general_ci';
- 設定を保存する
SELECT @@character_set_server, @@collation_server;
注意事項
- UTF-8 に変更する前に、既存のデータベースとテーブルが UTF-8 と互換性があることを確認する必要があります。
- UTF-8mb4 は、UTF-8 よりも多くの文字をサポートできるため、可能な場合は UTF-8mb4 を使用する方が望ましいです。
補足
- 上記の手順は、MySQL 8.0 を対象としています。他のバージョンの MySQL を使用している場合は、ドキュメントを参照してください。
- my.cnf ファイルを編集する場合は、構文エラーがないことを確認してから保存してください。
- MySQL コマンドラインを使用する場合は、root ユーザーとして接続する必要があります。
[mysqld]
character-set-server=utf8
collation-server=utf8mb4_general_ci
# その他の設定
# MySQL コマンドラインに接続
mysql -u root -p
# デフォルト文字セットを UTF-8 に変更
SET GLOBAL character_set_server = 'utf8';
SET GLOBAL collation_server = 'utf8mb4_general_ci';
# 設定を確認
SELECT @@character_set_server, @@collation_server;
# 接続を閉じる
exit
- 上記のコードは、基本的な例です。環境に合わせて変更する必要があります。
- 詳細については、MySQL のドキュメントを参照してください。
MySQL のデフォルト文字セットを UTF-8 に変更する他の方法
MySQL Workbench は、MySQL を管理するための GUI ツールです。MySQL Workbench を使用してデフォルト文字セットを変更するには、以下の手順に従います。
- MySQL Workbench を起動し、MySQL サーバに接続します。
- ナビゲータ ペインで、サーバー > インスタンス > <サーバ名> を展開します。
- 初期化 を右クリックし、編集 を選択します。
- MySQL オプション タブで、デフォルト文字セット フィールドを utf8 に設定します。
- OK をクリックして変更を保存します。
Docker を使用して MySQL コンテナを起動する場合、デフォルト文字セットを UTF-8 に設定できます。これを行うには、以下のコマンドを使用します。
docker run -e MYSQL_CHARACTER_SET_SERVER=utf8 -e MYSQL_COLLATION_SERVER=utf8mb4_general_ci mysql
環境変数を使用
MySQL クライアントを起動する前に、以下の環境変数を設定できます。
export MYSQL_CHARSET=utf8
export MYSQL_COLLATION=utf8mb4_general_ci
mysqld_safe コマンドを使用して MySQL サーバを起動する場合、--character-set-server
オプションと --collation-server
オプションを使用してデフォルト文字セットを設定できます。
mysqld_safe --character-set-server=utf8 --collation-server=utf8mb4_general_ci
mysql character-encoding