MindStormsは自発的知識の獲得を支援するロボット作成キットだとか,プログラミングは習うものではなく,自分で気づかないと身に付かないなどと言っておきながら,時折,こうしろうに教えたくてしかたがなくなるときがある。とは言っても「これは,こうなのだ。こういうものなんだ」とグイグイ力強く詰め込むのは自分の息子相手であっても,おこがましく感じられる。理解というのは自分で作り上げていくものだと思うからだ。でも,枝葉末節というか枝葉の知識なら教えてもよいだろうとMySQLに関する細かいことをこうしろうに伝える。

 日経ソフトウエア本誌の連載でも使用しているMySQLは無料で利用でき,古くからLinuxだけではなくWindowsプラットフォームにも対応しているので,データベースの勉強目的にも広く利用されているようだ。

 MySQLは頻繁にバージョンアップされ,最新のVersion5ではストアドプロシジャやトリガーなどの機能も使えることは誌面で連載している通りだが,新しいものが必ずしも安定しており,自分の利用目的に合っているとは限らないので,何種類ものMySQLをPCにインストールするはめになる。

 Linuxではデーモンだが,WindowsXpではMySQLをサービスとしてインストールする。

 ちなみに私のPCにはMySQL4.0.24-ntとMySQL 4.1.14-nt,MySQL 5.0.15-ntがインストールされている。複数インストールするときの注意点は,インストール時にサービス名を重複しないように指定することである。私のPCではMySQL4.0.24-ntをMySQL,MySQL 4.1.14-ntをMySQL41,MySQL 5.0.15-ntをMySQL5の名前で登録している。

 MySQLの設定ファイルはLinuxではmy.cnfであるが,Windowsではmy.iniである。MySQL4.0まではmy.iniはWindowsディレクトリに置くことが一般的だったが,MySQL4.1からはインストーラがMySQLをインストールしたディレクトリにmy.iniを作成するようになった。複数バージョンをインストールするときに設定ファイルの衝突を気にしなくてもよいのである。

 たとえば,サービスMySQL41のプロパティを開くと実行ファイルのパスに

----------------------------------------------------------

--defaults-file="C:\Program Files\MySQL\MySQL Server 4.1\my.ini

----------------------------------------------------------
とmy.iniの場所が指定されていることがわかる。インストール後にMySQLの設定を変更したいときは,このファイルを直接編集すればよい。

 もっとも重要な設定はdefault-character-setの設定だろう。MySQL4.1からはインストーラがキャラクタセットを訊ねてくれるが,見逃したらmy.iniを編集してやればよい。EUCならujis,シフトJISならsjis,unicodeならutf8などと指定する。[client]セクションだけでなく,[mysqld]にも同様に指定する必要がある。そうしないと文字化けしてしまうからだ。

 クライアントプログラムに話を移そう。MySQL4.0まではメニューからアクセサリ,コマンドプロンプトとたどり,mysqlと打ち込んでMySQLモニタを起動しコマンドを入力する必要があった。

 MySQL4.1からはメニューに追加されるMySQL Command Line Clientを起動して,コマンドを実行する。

 statusコマンドを使うとキャラクタセットの指定などを確認することができる。

 キャラクタセットの他にもTCP portやdelimiter(デリミタ),カレントユーザーなどの情報が表示されている。

 最後に,データベースを作成してユーザーに権限を与えるまでの手順を説明しよう。どんなデータベースが作成されているかは,show databases;で確認する。作成済みのデータベースが一覧表示される。データベースを作成するにはcreate database文でcreate database データベース名;とデータベース名を指定する。

 ユーザーを作成し,権限を与えるにはgrant文を使う。上記の例では,sampledbというデータベースを作成し,
----------------------------------------------------------

grant all privileges on sampledb.* 
  to user01@localhost identified by ‘k9fc8oy1’;

----------------------------------------------------------
 とgrant文でsampledb.*(sampledbのすべてのオブジェクト)のall privileges(すべての権限)をlocalhost からアクセスするuser01に与えている。user01はパスワードk9fc8oy1で識別される。

 all privilegesではなくselect権限やinsert権限をselect,insertなどとバラで指定することもできる。また,sampledb.*とデータベース内のすべてのオブジェクトに権限を与えるのではなく,テーブル名を指定して,テーブル別に権限を設定することもできる。逆に*.*としてMySQL内の全データベースに関する権限を与えることもできる。