MySQL 5.1 高速インストール手順 Windows用

WindowsでMySQL 5.1をちょっと試してみたいという方向けのインストール手順書です。Webで検索するとMySQLのインストール手順書はたくさん見つかるのですが、今回ご紹介する手順にはこんな特長があります。

  • インストール時点で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サーバへは以下の設定で接続することができます。

  • ホスト名:PCのIPアドレス
  • ポート番号:3306
  • ユーザ名:scott
  • パスワード:tiger
  • 接続先データベース:scott

mysql.exeでの接続例です。

MySQLサーバの停止

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

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

データのバックアップ

MySQLサーバを停止した状態で、dataフォルダをコピーしてください。

アンインストール

MySQLサーバを停止した状態で、インストールしたフォルダを削除してください。
レジストリにゴミを残さずきれいに消せるので、環境構築に失敗しても最初から確実にやり直すことができます。ここがこの手順の最大の利点です。

まとめ

  • MySQLのZIP版を使う
  • 適切なmy.iniを用意する
  • 適切な初期設定スクリプトを用意して実行する

正直MSI版は使いづらいと思います。私はWindowsで作業するときはいつもZIP版を使っています。