Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
用意されているプションファイルサンプルからのコピー
展開したMySQLのバイナリの中に、support-filesというディレクトリがあり、 その中は
$ cd support-files $ ls MySQL-shared-compat.spec my-large.cnf mysql-log-rotate magic my-medium.cnf mysql.server my-huge.cnf my-small.cnf mysql.spec my-innodb-heavy-4G.cnf mysql-4.1.10.spec ndb-config-2-node.ini $
となっていたのだが、.cnf が、MySQLのコンフィギュレーションファイルである。 規模別に、huge, large, medium, small の4つがあらかじめ用意されている。 ここは、しごく妥当なところで、my-medium.cnf を選ぶことにする。
MySQLのサーバやクライアントは、起動コマンドで色々指定しようとすると、 多数のオプションを必要とすることがあり、面倒であるだけでなく、確実に間違える。 まあ、どこかに書いて隠し持っておくとか、なんらかの工夫をしないと忘れるだろう。 でも、MySQLは、このようなめんどうなオプションをまとめて記述できる オプションファイル(コンフィギュレーションファイルとも言う)が用意されてあり、 そこに記載されている内容を起動時に必要に応じて読み取って、起動してくれる。 このおかげで、起動コマンドに長いオプションの羅列をしなくても済む。
オプションファイルは色々な場所に置くことができるのだが、 今は、/etc/my.cnfというファイル名の場合だけ考える。 ここに置くオプションファイルは、グローバルオプションファイルとも呼ばれる。
/etc/my.cnf
さて、/etc/my.conf にコピーしておこう。
# cp my-medium.cnf /etc/my.cnf
なお、上記のことは、ソースからコンパイルしてインストールする場合の手順 には実はあったのだ。しかし、ソース版とバイナリ版のmy-medium.cnf は弱冠違いがあるので、バイナリ版を動かすのだったら、バイナリの方のを コピーしておくのが無難だろう。
前回、
$ mysql --default-character-set=ujis
として、mysqlクライアントの起動オプションでujisを指定した。
ここでは、起動オプションではなく、/etc/my.cnf におまじないをすることで、 同じ動作ができるようにしてみよう。
/etc/my.cnf は、[group] という形で記載内容がグループ分けされている。 それを探していたら、以下の[mysql]グループが見つかった。
[mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates
no-auto-rehash は何だろう? 分らないので無視しよう。 その他の行は、# で始まっているのでコメントに違いない。
この[mysql]グループの最後に、ujisの指定を追加してみよう。 オプションの -- だけを削除して、以下のように追加したものをセーブした。
[mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates default-character-set=ujis
この間も、MySQLサーバは起動したままだ。
以上の書き変えを終えて、再度mysqlクライアントコマンドを、 今度はオプションなしで起動してみた。 そして、キャラクタセットがどうなったかも調べてみた。
$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 4.1.10-standard-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | character_set_client | ujis | | character_set_connection | ujis | | character_set_database | latin1 | | character_set_results | ujis | | character_set_server | latin1 | | character_set_system | utf8 | +--------------------------+--------+ 6 rows in set (0.00 sec) mysql>
以上のように、オプションなしでも、ちゃんと3つの システム変数 character_set_client, character_set_connection, character_set_results は値がujisになった。
これで、オプションファイルの指定は正しかったようだ。
mysqlクライアントは、起動時に /etc/my.cnf を読みこむので、 サーバ起動中に書き変えても、mysqlクライアントを起動し直しさえすれば、 当然反映されるわけだ。
フィードバック: