このサイトは、只今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

まだ間に合う!!「RSコンポーネンツ」で、ラズベリーパイが 配送料無料で購入できるキャンペーン中!

RaspberryPi

2018.12.07

IntelliJ + Spring Initializr + Gradleで、サクッとSpring Boot環境を構築

Java

2018.11.24

Mavenを用いたアプリケーション作成方法

Java

2018.11.24

Gradleを用いたアプリケーション作成方法

Java

2018.11.23

Jenkins 認証情報「Jenkinsマスター上の~/.sshから」が表示しない

tool

2018.11.17

流れで、Raspberry Pi Zero WHを購入。気がつけばもうラズパイ4台。

RaspberryPi

2018.11.06

安く電子工作を始めるなら、電子パーツ購入は「aitendo」がおすすめ!

RaspberryPi

2018.11.06

ASUS Chromebook Flip C101PAに、Visual Studio Codeをインストール

Chromebook

2018.10.15

Chromebookに、Ubuntu (Xubuntu)をインストールしたあとの日本語入力設定

Chromebook

2018.10.14

ASUS Chromebook Flip C101PAに、Ubuntu (Linux)インストール手順

Chromebook

2018.10.10

nodeのない環境にnodeを導入(HTML5ゲームも提供)し続け、1年数ヶ月経過後、かなり開発環境が整ってきたお話。

JavaScript

2018.09.26

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

Chromebook

2018.07.22

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US