WindowsでMySQL 5.1をちょっと試してみたいという方向けのインストール手順書です。Webで検索するとMySQLのインストール手順書はたくさん見つかるのですが、今回ご紹介する手順にはこんな特長があります。
MySQL ZIP版をダウンロードする
MySQLのダウンロードサイトでは、Windows用のバイナリとして以下の3種類が用意されています。

普通はMSI版を利用するのですが、ちょっと試してみたいだけという場合はZIP版(Without installer (unzip in C:\))の方が便利です。今回はZIP版をダウンロードします。
アーカイブをC:ドライブ直下に展開する
ダウンロードしたmysql-noinstall-5.1.37-win32.zipをC:ドライブ直下に展開します。ZIP版はここに展開されることを前提にして実行ファイルがビルドされているため、場所や名前を変えてはいけません。

パラメータファイルmy.iniを作成する
C:\mysql-5.1.37-win32 フォルダにパラメータファイルmy.iniを作成し、中身を記述します。元々MySQLにはmy-large.ini、my-medium.iniなどのサンプルファイルが付属しているのですが、これらのサンプルファイルはそのまま使うと日本語が100%文字化けするなど、いくつか問題があります。まずは以下のテキストをそのままコピーしてお使いください。
[mysqld] ## character set character_set_server = utf8 collation_server = utf8_general_ci ## storage engine default_storage_engine = InnoDB transaction_isolation = READ-COMMITTED innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 1 innodb_buffer_pool_size = 64M innodb_log_buffer_size = 8M innodb_log_file_size = 128M ## binary log #log_bin = mysql-bin #binlog_format = MIXED #sync_binlog = 1 #binlog_cache_size = 1M ## slow query log slow_query_log = 1 long_query_time = 1.0 ## query cache query_cache_type = 1 query_cache_size = 16M ## etc. max_connections = 128 thread_cache_size = 8 table_open_cache = 512 max_allowed_packet = 16M sort_buffer_size = 4M read_buffer_size = 1M console = 1 [mysql] default_character_set = cp932
このパラメータファイルは、トランザクションや行レベルロックをサポートしたInnoDBストレージエンジンを使用する設定になっています。そのためkey_buffer_sizeなどMyISAMストレージエンジンに関する設定は記述されていません。
MySQLサーバを起動する
MySQLサーバを起動します。ZIP版の場合、これはbinフォルダにあるmysqld.exeをダブルクリックするだけです。

するとこのようにコマンドプロンプトウィンドウが現れ、ready for connections.まで進めば起動完了となります。起動完了後、このウィンドウはそのままにしておいてください。

初回起動時は以下のようにWindowsファイアウォールの警告が表示されます。必ず「ブロックを解除する」を選択してください。

コマンドプロンプトからmysql.exeを起動し、初期設定スクリプトを実行する
初期設定のために、コマンドプロンプトからmysql.exeを起動してMySQLサーバにログインします。このときスクリーンショットのように-u rootオプションをつけて、管理者としてログインしてください。

管理者としてログインしたら、次に示すスクリプトをコピー&ペーストして実行してください。このスクリプトによって以下の設定が行われます。
- ゲストユーザの削除
- testデータベースの削除
- scottデータベースの作成
- scottユーザの作成
- サンプルテーブルの作成とデータ生成
drop user ''@localhost;
drop database test;
create database scott;
grant all privileges on scott.* to scott@'%' identified by 'tiger';
use scott
create table dept
(deptno decimal(2) primary key,
dname varchar(14) ,
loc varchar(13));
create table emp
(empno decimal(4) primary key,
ename varchar(10),
job varchar(9),
mgr decimal(4),
hiredate date,
sal decimal(7,2),
comm decimal(7,2),
deptno decimal(2),
foreign key (deptno) references dept (deptno));
create table bonus
(ename varchar(10),
job varchar(9),
sal decimal,
comm decimal);
create table salgrade
(grade decimal,
losal decimal,
hisal decimal);
begin;
insert into dept values (10,'accounting','new york');
insert into dept values (20,'research','dallas');
insert into dept values (30,'sales','chicago');
insert into dept values (40,'operations','boston');
insert into emp values (7369,'smith','clerk',7902,str_to_date('17-12-1980','%d-%m-%Y'),800,null,20);
insert into emp values (7499,'allen','salesman',7698,str_to_date('20-2-1981','%d-%m-%Y'),1600,300,30);
insert into emp values (7521,'ward','salesman',7698,str_to_date('22-2-1981','%d-%m-%Y'),1250,500,30);
insert into emp values (7566,'jones','manager',7839,str_to_date('2-4-1981','%d-%m-%Y'),2975,null,20);
insert into emp values (7654,'martin','salesman',7698,str_to_date('28-9-1981','%d-%m-%Y'),1250,1400,30);
insert into emp values (7698,'blake','manager',7839,str_to_date('1-5-1981','%d-%m-%Y'),2850,null,30);
insert into emp values (7782,'clark','manager',7839,str_to_date('9-6-1981','%d-%m-%Y'),2450,null,10);
insert into emp values (7788,'scott','analyst',7566,date_add(str_to_date('13-jul-87','%d-%b-%y'), interval -85 day),3000,null,20);
insert into emp values (7839,'king','president',null,str_to_date('17-11-1981','%d-%m-%Y'),5000,null,10);
insert into emp values (7844,'turner','salesman',7698,str_to_date('8-9-1981','%d-%m-%Y'),1500,0,30);
insert into emp values (7876,'adams','clerk',7788,date_add(str_to_date('13-jul-87', '%d-%b-%y'), interval -51 day),1100,null,20);
insert into emp values (7900,'james','clerk',7698,str_to_date('3-12-1981','%d-%m-%Y'),950,null,30);
insert into emp values (7902,'ford','analyst',7566,str_to_date('3-12-1981','%d-%m-%Y'),3000,null,20);
insert into emp values (7934,'miller','clerk',7782,str_to_date('23-1-1982','%d-%m-%Y'),1300,null,10);
insert into salgrade values (1,700,1200);
insert into salgrade values (2,1201,1400);
insert into salgrade values (3,1401,2000);
insert into salgrade values (4,2001,3000);
insert into salgrade values (5,3001,9999);
commit;
インストール完了
以上でインストールは完了です。あとはお好きなクライアントからデータベースをご利用ください。MySQLサーバへは以下の設定で接続することができます。
mysql.exeでの接続例です。

MySQLサーバの停止
MySQLサーバを停止するには、mysqld.exeを起動したウィンドウでCtrl-Cを入力します。

パラメータファイルmy.iniでconsole = 1と設定しておくことで、このようにmysqld.exeがCtrl-Cを受け付けるようになります。本来MySQLサーバの停止にはmysqladminコマンドを使うのですが、ちょっと試すだけならこちらの方が簡単ですね。
ただし、ウィンドウの×ボタンで閉じると異常終了になってしまうので注意が必要です。Ctrl-Cなら正常終了です。
データのバックアップ
MySQLサーバを停止した状態で、dataフォルダをコピーしてください。