はじめに
最近のMySQLの文字コード(utf8)の指定がすこし変わったみたいなので、ついでにまとめます。
主に一般的なMariaDBのセッティングです。
今回インストールしたMariaDBのバージョンは
mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1
でした。
MariaDBのインストール
$ sudo yum update
$ sudo yum install -y mariadb mariadb-server
MariaDBサーバーを起動させ、OS再起動時の自動起動を設定します。
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb # 任意
確認します。
$ mysql --version
mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1
(上記のバージョンは、本記事の投稿時点のバージョンです)
初期設定
簡易な初期設定スクリプトを実行します。
$ sudo mysql_secure_installation
初期設定が対話モードで始まるので設定していきます。
主に、rootパスワードを設定し、残りはEnterを入力すれば妥当な設定になります。(EnterでYを入力したことになります)
# 1つ目: 今のrootパスワードを入力(初めはパスワードが無いのでEnterでOK)
Enter current password for root (enter for none): # Enter
# 2つ目: rootパスワードを設定するか
Set root password? [Y/n] # Enter
# 3つ目: 新しいrootパスワードを設定
New password: # 新しいパスワードの入力
# 4つ目: 新しいパスワードの確認
Re-enter new password: # 新しいパスワードを再入力
# 5つ目: 匿名ユーザ(初期設定などのために誰でもログインできるユーザ)を削除するか
Remove anonymous users? [Y/n] # Enter
# 6つ目: rootのリモートログインを禁止するか
Disallow root login remotely? [Y/n] # Enter
# 7つ目: testデータベース(テスト用の誰でもアクセス可能なデータベース)を削除するか
Remove test database and access to it? [Y/n] # Enter
# 8つ目: 権限を管理するテーブルをリロードして、設定をすぐに反映するか
Reload privilege tables now? [Y/n] # Enter
文字コードをUTF-8に設定する
日本語などを問題なく登録できるように、文字コードをUTF-8に設定します。
以前まではutf8
と指定すればよかったのですが、より多くの漢字や絵文字を表現できるutf8mb4
の指定が推奨されるようになりました。後々デフォルトになるようです。2つの違いはMySQL内の話なので、UTF-8と同じと考えて大丈夫です。
mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1
環境では、utf8mb4
を指定しないと、正常に設定が反映されませんでした。
sudo vi
などで/etc/my.cnf.d/server.conf
を編集します。
<<< 省略 >>>
[mariadb]
character-set-server = utf8mb4 <- これを追記
<<< 省略 >>>
続いて、/etc/my.cnf.d/client.conf
を編集します。
<<< 省略 >>>
[client-mariadb]
default-character-set = utf8mb4 <- これを追記
<<< 省略 >>>
MariaDBを再起動します
$ sudo systemctl restart mariadb
ログインし、確認します。
$ mysql -u root -p # MariaDBにログイン
Enter password: # rootパスワードを入力
文字コードの設定を確認します。
MariaDB [(none)]> 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/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
上記のように表示されれば、正常に設定が完了しています。quit;
でログアウトします。