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

CentOS MySQL(MariaDB) を バージョン10.3に yumでアップデート

2019.03.22

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

CATEGORY LIST

LATEST NEWS

Mac VSCodeで、SFML C++開発環境を作る。

C++

2024.09.09

Rust-SDL2 examplesをすべて試す

Rust

2024.09.01

JavaScriptで、DOMを放り投げる処理

JavaScript

2024.07.27

Rustで創る MOS 6502 CPU その2

Rust

2024.07.23

Rustで創る MOS 6502 CPU その1

Rust

2024.07.19

汎用 3D mesh/model viewerを求め。と、簡単に、FBXファイルをglTF(glb)に変換ツールを求め。

C++

2024.06.06

M1 Macで、OpenGL GLUTを使ってコンパイルする

C

2024.04.27

Rust - Actix Web mongo ユーザー登録 JWT認証

Rust

2024.03.24

Rust - Actix Web JWT 認証認可 APIの作成

Rust

2024.02.25

Rust - Actix Web × JSON 静的ファイルをAPIで返却

Rust

2024.01.19

Rust - Actix Web × MongoDB環境をサクッと起動

Rust

2024.01.18

5分で学ぶ RustでWave Function Collapse (波動関数崩壊アルゴリズム)

Rust

2024.01.15

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

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

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

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

FOLLOW US