このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

CentOS MySQL5.6 文字コード設定

MySQL

2013.09.29

この記事は最終更新日から1年以上が経過しています。

前回、

VirtualBoxとVagrantで開発環境を構築 その2 PHP + MySQLインストール

などの記事で、VirtualBoxとVagrantで作った環境にMySQLをインストールしたのですが、

よく考えると文字コードの設定を行っていませんでした。

MySQLで日本語を使おうとすると文字化けが発生するかと思います。

MySQLサーバーを起ち上げ時の文字コードデフォルト設定が必要となりますので、設定していきましょう。

文字コード確認

mysql を起ち上げ、文字コードを確認すると、

mysql > show variables like "char%";

(またはstatusでも確認出来ます。)

このような感じや、もしくは全部 latin1になっていたりします。

このままだと日本語が入力出来ないので設定していきます。

文字コード設定のファイルは my.cnf となります。

MySQL5.6 my.cnf設定

my.cnf ファイルは /etc/以下である /etc/my.cnf にありますので設定していきます。

存在しない場合は、ファイルを作成しましょう。

sudo vi /etc/my.cnf

こちらのファイルに以下を追加。(又は作成)

[client]
default-character-set=utf8

[mysqld]
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8 

skip-character-set-client-handshakeの指定は、MySQLが勝手に内部変換しないようにするためとなります。

注意点としましては、MySQL5.6(5.5〜)から

[mysqld]
default-character-set=utf8

が、エラーとなってしまい、記述しているとMySQLサーバーが起ち上がらなくすらなってしまします。

なので、character-set-server = utf8 を記述します。

設定反映 MySQLサーバー再起動

上記のファイルの設定できましたらMySQLサーバーを再起動し、設定を反映させましょう。

従来だと、 mysql.server start 等のコマンドが使えるのですが、CentOSの起動コマンドは /etc/init.d/mysqlで行います。

MySQLサーバー停止

sudo /etc/init.d/mysql stop 

MySQLサーバー起動

sudo /etc/init.d/mysql start 

設定を確認

MySQLサーバーを再起動しましたら確認しましょう。

MySQLに接続、確認

mysql > show variables like "char%";

 

utf8に変更されているのが確認できます。

メデタシメデタシ。

設定前のDB、テーブルの文字コード変更

これで全て解決。

と思いきや、テーブルに日本語のデータを追加しようとすると、

のような感じでデータを挿入出来ません。

これは、設定前に作成したデータベース、テーブル、カラム等には文字コード変更が反映されていない(latin1のまま)ので、手動で変更する必要があります。

既存データベースの文字コード確認
mysql> use 【データベース名】
mysql> status;

Db characterset: 等がlatin1のままだったりします。

ここでlatin1のままだと文字化けしてしまいますので変更しましょう。

ALTER DATABASE 【データベース名】 DEFAULT CHARACTER SET 【文字コード】;

で変更できます。

utf8 変換例:

>mysql ALTER DATABASE dbname DEFAULT CHARACTER SET utf8;

 

既存テーブル、カラムの文字コード確認

続いてテーブルの文字コードの確認を行います。

SHOW CREATE TABLE 【テーブル名】;

上記のコマンドで確認が出来ます。

このような感じで latin1が含まれていましたら文字化けしてしまいます(データ挿入出来ません)。

以下のコマンドで変更します。

ALTER TABLE 【テーブル名】 CONVERT TO CHARACTER SET 【文字コード】;

utf8 変換例:

mysql> ALTER TABLE test CONVERT TO CHARACTER SET utf8;

これで文字コードの修正は完了です。必要であればMySQLを再起動して確認しましょう。

Comment

Related Article

MySQLが起動しない エラー対応 Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

2016.04.21

SQL文書きたくないけど手軽にDB扱いたいあなたへ〜 SQLite&Lita 〜

2015.04.26

MySQL オートインクリメントの値をリセット

2015.04.12

MySQLからSQLiteに変換 SQLiteのまとめ

2013.11.17

CentOS MySQL5.6 文字コード設定

2013.09.29

SQLiteを使用する方法 : iPhoneアプリでも有効

2012.03.13

MySQL ブラウザから操作するページ作成03 PHPファイル作成

2011.08.25

MySQL ブラウザから操作するページ作成02 HTML作成

2011.03.29

MySQL ブラウザから操作するページ作成01 データベース作成

2011.03.29

MySQL データベースと接続する際に記述する 基本PHP

2011.03.28

CATEGORY LIST

LATEST NEWS

安い!軽い!早い! ノートPC(開発環境)。 Chromebookをついに購入いたしました!

Chromebook

2018.07.22

debian & Xserver XDSLで FireFoxが真っ白のページとなる件

Linux

2018.07.08

Kindle Fire HD 8 にLinuxを導入して扱えるようにする。超コスパ Linux タブレット構築方法!!

Linux

2018.07.04

Laravel 4 を PHP 7 環境へ移行したお話。

PHP

2018.06.10

iPhoneXで、ubuntuを動かす。

サーバー

2018.06.09

仮想通貨(暗号通貨)の作り方 その2 (Gethの使い方)

暗号通貨、ブロックチェーン

2018.05.20

$PAC (パックコイン)Macでマスターノードを建てる方法

暗号通貨、ブロックチェーン

2018.05.14

ついに「ウェブ帳」リニューアルしましたぁ!!!(PC 版)

イベント

2018.05.07

Raspberry Pi 3 Model B+ 2018 ニューモデルを購入!!

RaspberryPi

2018.04.23

仮想通貨(暗号通貨)の作り方 その1

暗号通貨、ブロックチェーン

2018.04.09

iPad Proで開発を行いたい。

iPad

2018.03.29

CPU使用しすぎて、Conohaからサーバーシャットダウンされた件。

tool

2018.03.28

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US