Open Source WEB

用意されているプションファイルサンプルからのコピー

展開した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クライアントを起動し直しさえすれば、 当然反映されるわけだ。


戻る:mysqlクライアントの起動オプション

次へ:.my.cnfを使ったユーザ別オプション指定


フィードバック:

Name:
Comment:
momo: (Tue Jun 14 11:22:05 2005 )
初めまして、Google 検索したどり着きました。
MySQL5.0.6 のWindows版を使用しています。
文字化けの現象が発生していて、本ページを参考に色々トライしているのですが、改善されません。
Windows の場合、my.ini にて default-character-set を設定するようになっていますが、ここでdefault-character-setを設定しても、
character_set_server と character_set_database にしか反映されません。
character_set_client/character_set_connection/character_set_results
は latin1 のままです。多分、ここら辺に文字化けの原因があると思うのですが、Windows版だとmy.ini の内容ではダメなのでしょうか?

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us