LoginSignup
20
19

More than 5 years have passed since last update.

ターミナルでMySQLを見ると大抵、文字化けしてるから。治す。けどいまいち分からない。

Posted at

下記の設定で文字化けは解消されたのですが、いまいち理解ができませんでした。(;£;)

概要

たいていターミナルからMySQLを覗きますと、文字化けをしています。なので、その辺を勉強したいと思いました。
環境としては、Macで。Vagrantの中のMySQLです。

MySQLの中で調べる。

Vagrant内でMySQLにログインしまして、showなんちゃらと打ちます。

mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

最初はこんな風になっております。あー。ほとんどlatin1だよ。なんだよlatin1って。

そして、いろなところに書いてある情報をもとに、「/var/my.cnf」を弄って、なんとかしようと思いました。

my.cnfの設定

まずは、以下のように、一箇所だけ追加してみます。

/etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

# この下が追加部分
[client]
default-character-set = utf8

そうすると、次のようになりました。


mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

次の2つは変更されませんでした。

  • character_set_database
  • character_set_server

実は、この状態でターミナルからの文字化けは、僕の環境では文字化けは解消されました。

めでたし、めでたし。

でも全然「めでたし、めでたし」じゃない。

  • 何をやってもdatabaseとserverは変わらない。(*)
  • global variableってなに?
  • そもそも、これらの変数がどこに作用しているのか不明。

という状態ですので、全体的に悲しい気持ちでございます。

(*)これは、例えば以下のような記述です。

/etc/my.cnf
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysql]
default-character-set = utf8

[mysqldump]
default-character-set = utf8

どなたかご助言など、頂けますと本当に嬉しいです。

宜しくお願い致します。ありがとうございました。引き続き勉強します。

20
19
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
19