9月 032012
 
この記事の所要時間: 333

MySQL

前置き

本来なら今の時期は情報セキュリティスペシャリストの勉強すべきなんだけど、なんかしばらく放置してたMySQLのテキストを最近読んでみたらなかなか面白くて本格的に学習し始めた。
テキストはWindowsでXAMPPを利用する前提で書いてるんだけど、せっかくだからMacでやりたいと思いMBPRにXAMPPを入れて環境構築を行った。


環境変数の設定

まずWindowsのコマンドプロンプトにあたるMacのターミナルからmysqlコマンドを簡単に使うために、環境変数にmysqlのパスを入力する必要がある。
「Mac 環境変数」なんかで検索すると分かるんだけど、システム設定に書き込むWindowsと違い、Macの場合は「.bash_profile」というファイルにパスを書き込む必要がある。
「.bash_profile」はホームフォルダに存在するのだが、自分で作成していない場合はファイル自体が存在していない事もある。
自分の場合もファイルが無かったためターミナルからファイルを生成した。
ここまでは良かったのだが「.bash_profile」を編集する際に、元々ファイルが無くてもターミナルが普通に動作していたので「PATH」にMySQLコマンドの位置だけ記述してターミナルを再起動してしまった。

そうするとどうなるかというとMySQLコマンド以外のコマンド(cdは例外)へパスが通っていない状態でターミナルが起動するのだ…。
「.bash_profile」を削除しようとしても、ターミナルからrmコマンドで削除するか、defaultコマンドでfinder上に表示させて削除するしかない。
当然各コマンドへのパスが通っていないのでrmもdefaultもそのままでは利用できない…。
幸いターミナル起動時にデフォルト?のPATHが表示されていたため、この中からVimの配置されたディレクトリを特定して以下コマンドで再度「.bash_profile」を編集してデフォルトのPATHの内容を加えて復旧出来た。

1
2
cd ~
/usr/bin/vim .bash_profile



文字コード問題

環境変数の設定後はデータベースやらテーブルの作成までは問題無くできたんだけど、いざテーブルにデータをINSERTする段階になったのだがテキスト通り日本語をMySQLのコンソールに打ったところ日本語が文字化けした。
入力したデータをSELECTで呼び出すとちゃんと日本語表示されるんだけどコンソールに入力して確定すると文字化け表示されてしまう…。

テキストはWindows環境の前提なので環境構築の段階でShiftJISでの設定が書いてあった。
こちらはMacということでUTF-8での設定を行ってたんだけどどうもこれではダメみたい。
色々と検索したところなんかEUC-JPならいけるっぽいという情報が見つかった。
というわけで早速MySQLとターミナルの文字コード設定を弄ってみた。
まず以下がターミナルの設定、文字エンコーディングを「EUC」にした。
ターミナル

次にMySQLの設定を弄る訳だが、XAMPP for Macの場合の設定ファイルは以下となる。
/Applications/XAMPP/xamppfiles/etc/My.cnf

このファイルをエディタで開いて末尾など適当な場所に以下の記述を加える。

1
2
3
4
5
6
7
8
[client]
default-character-set = ujis

[mysqld]
default-character-set = ujis
 
[mysqldump]
default-character-set = ujis

あとは設定が間違っていないかの確認だ。
ターミナルでMySQLのコンソールを呼び出したら

1
status

コマンドで文字コードを確かめる。
以下の様に表示されていればOKだ。
mycnf

これでMySQLコンソールに日本語を入力しても文字化けせず、INSERTした日本語データも正常に表示されるはず。
もっと良い方法がありそうな気もするけどとりあえずこんな感じで。

  One Response to “MacのターミナルからMySQLコンソールを使う基本的な設定”

  1. Blog更新!:MacのターミナルからMySQLコンソールを使う基本的な設定 – http://t.co/GgdMVRhC

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


*