ここでは MySQLを
・Windows環境にインストールし
・Javaから(トランザクション機能を含めて)使用し
・日本語データを扱える
ところまでの最低限の設定について説明します。
ここの内容は「私はこうしたら出来た」という意味合いが強いので、もしかするとより良い方法があるかもしれません。
MySQLの最新版は、http://dev.mysql.com/downloads/mysql/5.0.html にあります。
Windows用を選択して、インストーラー付きの方をダウンロードします(「Windows (x86) ZIP/Setup.EXE」のほうです)。
それからhttp://dev.mysql.com/downloads/ の下の方に「Connecter/J」というメニューがあるので、ここからJDBCドライバを選択してください。「Generally Available (GA) (recommended)」になっているものを選べばよいでしょう。
こちらからはWindows環境の場合、「Source and Binaries (zip)」のほうを選択してダウンロードします。
続いて日本語版のドキュメントです。http://dev.mysql.com/doc/ の、「MySQL Reference Manual」に Japanese v5.1 というタイトルがあります(MySQL5.1はまだベータリリースですが、5系列のドキュメントはv5.1になってます)。この中の「HTML, Page/chapter」のZip形式を選択してダウンロードしましょう(「HTML Single page」はやめた方がいいです。巨大な1つのHTMLファイルになってて、検索などしにくいですから)。
ダウンロードしてきたファイルはZIP形式で圧縮されています(例:mysql-5.0.15-win32.zip)。どこかに一時的なディレクトリを作成し、そこにダウンロードしてきたファイルを展開します(例:C:\TEMP\mysql-5.0.15\)。
展開すると Setup.exe ファイルが出てくるので、これを実行するとインストールが始まります。
次の画面ではインストール方法の種類を聞いてきます。 Typical が標準パターンですが、この場合インストール先のディレクトリは C:\Program Files\MySQL に固定されて変更できません。ここではインストール先を C:\MySQL に変える方法で説明していきます。そのため Custum の方を選択してください。
Custum を選ぶと続いて、インストールする機能(プログラム)を聞いてきます。これはこのまま変更しないでいいでしょう。
同じ画面でインストール先のディレクトリを変更します。「MySQL Server」か「Client Programs」を選択した状態にしてください。そうすると右下の「Change...」が使用可能になります。これを押してインストール先ディレクトリを指定します。
インストール先変更画面から元の画面に戻ったとき、左下にある「Install To:」の表示が変更したディレクトリになっていることを確認して次に進みましょう。「Next >」を押すと確認画面に映ります。
この確認画面で「Install」ボタンを押せばインストール開始です。
インストールを開始すると最初にMySQL.comへのサインアップ登録を聞いてきます。これは Skip Sign-Up でいいでしょう。
最後にインストール後そのまま初期の環境設定をするか確認してきます。 Configure the MySQL Server now をチェックしたまま「Finish」を押すと、インストール後そのまま環境設定の画面に移ります。
次の設定方法指定では Detailed Configuration を選びましょう。
MySQLの使用目的というかインストールPCの使用目的ですが、このページはサーバーJavaのお勉強環境構築を主な目的としているので、 Developer Machine を指定します。以降の環境設定の結果は、my.ini という設定ファイルにパラメーター値として出力されます。Server Machine等、選択した使用目的に合わせたパラメーター値を出力してくれる、ということです。
MySQLはデータベースファイルへの格納方法(編成方法)について、いくつかの形式(テーブルタイプ)を持っています。ここでは主として使う、デフォルトのテーブルタイプを選択することになります。Multifunctional Database にしておきましょう。
Transactional Database Only を選択した場合、 InnoDB という行単位のロックをサポートした、トランザクション処理に適したテーブルタイプがデフォルトとして使われます。
Non-Transactional Database Only を選択した場合は MyISAM という、MySQL4.0以前にはデフォルトだったテーブルタイプが使われます。この形式はトランザクション機能は持ちませんが、その分オーバーヘッドが少ないため高速です。
続いてMySQLでデータベースファイルを作成するとき、InnoDBと言う形式のものを作成した場合の、データベースファイルを格納するディレクトリを選択します。ここの選択が有効になるのは、あくまでInnoDB形式のデータベースだけで、その他の例えばMyISAM形式のときは関係ありません。Installation Path \dataが格納先です。
InnoDB形式のデータベースファイル格納先ディレクトリですが、実運用で業務を走らせたりする場合には、格納するドライブ名やディレクトリ名を指定したほうがいいでしょうが、お勉強環境という使用目的からすればデフォルトの Installation Path のままでいいでしょう。この場合(このページのとおりにインストール作業をしてきた場合)、C:\MySQL\MySQL Server 5.0\data下にデータベースファイルが作成されます。
MySQLインストール先ディレクトリもデフォルトのままの場合だと、C:\Program Files\MySQL\MySQL Server 5.0\dataがデータベースファイルの格納先になります。
次はデータベースサーバーに接続する際、コネクションというものを張りますが、この同時接続コネクション数に関する設定です。デフォルトの Decision Support(DSS)/OLAP のままでいいです。この場合、20コネクションまで同時接続可能な設定になります。
TCP/IP接続でMySQLサーバーに接続するか否かの指定と、TCP/IP接続する場合のポート番号設定です。これもデフォルトのままにしておきます。デフォルトのポート番号:3306は、JavaからJDBCで接続するときの設定に使うので覚えておいてください。
例えば複数のMySQLサーバーを同時に動かす場合(旧バージョンであるMySQL 4.1を同時に使う)など、デフォルトのポート番号がぶつかってしまうことがあります。その場合はここでポート番号を変更してください。
データベースに文字列を格納する際の、文字コードを指定します。絵の中に「日本語」と出てる、 Best Support For Multilingualism を選択すると文字コードはUTF8(unicode)が使われます。
UTF8にした場合は次のような問題点があります。Windows上でテキストエディタ等でデータを作成し、ファイルからDBにロードするような状況を考えます。この場合デフォルトでは文字コードはShift JISになっています。従ってこのままではロード出来ないことになってしまいます(日本語が文字化けする)。必ずUTF8(unicode)に変換してファイルを保存しておく必要があります。
Windows環境で日本語を使う場合、 Manual Selected Default Character Set / Collation を選択して sjis(Shift JIS)を選択することも出来ます。こちらにすれば上に書いたUTF8での問題は起きません。
どちらにするか悩ましいところですが、このページではJavaからMySQLを使うのを主たる目的としています。この場合、Javaでは文字列はunicodeで扱われるため、MySQL DBにアクセスするときにsjis <=> unicode間の変換が生じます。
以上のようにどちらも善し悪しがあるのですが、ここではShift JISを使う設定で行くことにします。
(この文字コードの問題は「MySQLの操作 」でも触れているので参考にしてください)
Windows上でMySQLをOSのNTサービスという機能としてインストールするか否かと、サービスとする場合のサービス名を指定します。サービス名はデフォルトの MySQL か、旧バージョンがインストール済みでそれも残したままにして平行稼働させたりするのなら、 MySQL5 にするのがいいと思います。
NTサービスとしてインストールするとき、「スタートアップの種類」は「自動」になっているので、OS起動時に自動的に MySQL が起動されます。ただここではサーバーJava学習環境としてMySQLを利用することを考えているため、常にMySQLが起動されている状態は好ましくないかもしれません。私もそうしてますが、サービスの「スタートアップの種類」を「手動」に変えたほうがいいでしょう。
同じ画面上で Launch the MySQL Server Automatically のチェックを外しておけば「手動」起動のサービスになります。
後からサービスの種類を変える場合は、「スタートメニュー」−「設定」−「コントロールパネル」−「管理ツール」−「サービス」と進み(Win2000のとき)、サービス一覧からMySQLを選択してください(2つ上の画面で設定したサービス名になります)。そして「プロパティ」を開き、「スタートアップの種類」を「手動」に変えます。
また Include Bin Directory in Windows PATH にチェックしておくと、MySQLの実行モジュール用ディレクトリ(ここの例ではC:\mysql\MySQL Server 5.0\bin)が、PATH環境変数に登録されます。
これは個人の好きずきでしょう。
最後にMySQLの管理者ユーザー(ユーザー名:root)のパスワード設定を行ないます。しょせんお勉強環境だからセキュリティなんかいい、という場合には Modify Security Settings のチェックを外してください。ユーザー名:rootはパスワード無しとなります。
パスワード入力の下にある Enable root access from remote machine にチェックをすると、ネットワーク経由で管理者権限でログイン出来るようになります。
デフォルトではインストールしたローカルマシン上でしか、管理者権限での作業は出来ません。これはあくまでコマンドラインツールを使ってDBを操作(テーブルを作成したり、ユーザーを作成したりなど)する場合の話です。DB上のデータ操作とは別の話です。
チェックを外してパスワード無しにした場合の画面がこちらです。
そして「Execute」ボタンを押せば、以上の指定内容で初期の環境設定がなされます。
これはrootユーザーのパスワードを設定した場合の画面で、パスワード無しにした場合はこちらです(Apply Security settings が不活性になってます)。
以上で無事にインストールと初期の環境設定が完了しました。
MySQLをインストールすると、ここの例ではC:\mysql\MySQL Server 5.0\bin にMySQLInstanceConfig.exeというファイルがあります。これを使うとインストール時に行った、環境設定部分だけを再実行できます。
インストール時に行った環境設定から特に変更することが無いのであれば、「・メッセージの日本語化 」まで飛ばしてください。ただ文字コードにUTF8を指定した場合は、後述するコマンドラインツールによる操作上の問題があるので、 デフォルト文字コードの変更 は見ておいてください。
またGUIを使ったMySQLの管理ツールにはMySQL Administratorというものがあります。MySQL本体をダウンロードしたページから選択できます。これを利用してMySQLの設定が出来るのですが、ここではその説明はしません。地道に直接設定ファイルを変更して設定する方法について説明していきます(以下に説明する内容はツールを使ったとしても、結局同じ設定操作をする必要があります)。
前述のようにインストールに続いてて初期設定をした場合、その設定内容は C:\MySQL\MySQL Server 5.0(デフォルトのままだとC:\Program Files\MySQL\MySQL Server 5.0です)下に、 my.ini というテキストファイルとして出力されます。
以前のバージョン(4.1.5くらいまで)だと、MySQLの起動パラメータによる環境設定は my.ini または my.cnf という名前のテキストファイルにより行いました。 my.ini ファイルはWindowsのシステムディレクトリ(C:\WINDOWS や C:\WINNT 、環境変数 windir が指す場所ディレクトリです)に、MySQLインストール時に作成されています。my.cnf の場合はCドライブのルートに、C:\my.cnf を作成することになります。
なお設定ファイルの順番は、先に my.ini ファイルを見て次に my.cnf ファイルを見にいきます。
しかし前述のように少なくともMySQL 5.0.15では、インストールディレクトリにmy.iniが作成されるし、起動時にもこれが参照されます。そこで修正を加える場合はこれに対して行うものとします。
設定ファイルに変更を加える際、行の先頭が # で始まる行は注釈行として扱われます。何のための設定か後で分からなくならないよう、注釈も入れておくことをお勧めします。あるいは一時的に設定を変えるときなどにこれを活用してください。
テーブルに日本語データを格納するときの文字コードです。Windows環境ということでShift-JISにするのであれば、設定ファイルの [mysqld] セクションにある次のパラメータで指定します。
[mysqld]
default-character-set=sjis
ここで [mysqld] というのは、これ以降の設定がMySQLサーバー全体に対するものであることを表すセクション開始の意味になります。
なおWindows環境でデフォルト文字コードにutf8を指定している場合、もう一ヶ所の修正が必要です。 [mysqld] セクションの少し上に [mysql] セクションがあります。ここにも default-character-set の設定があり、インストール時にUTF8を選択した場合はここも
default-character-set=utf8
になっています。こちらだけを utf8 から sjis に変更しておいてください。
[mysql]
default-character-set=sjis
となります。
MySQLは検索性能重視のデータベースサーバーです。特徴としてテーブル毎にタイプというものがあり、それによって機能が変わってきます。
標準では MyISAM というテーブルタイプが使われます。これは安全性を保った上で最も高速な形式です。ただし通常のトランザクション管理機能はもっていません。
HEAP というテーブルタイプは最も高速です。それはメモリ中にテーブルを保持しているためです。ですから一時テーブルや、マスタ系コードテーブルなど業務時間中に更新が入らないテーブルに使うことがあります。メモリ中にテーブルを持つので容量に制限がありますし、ディスクに保存するときは別途そのための仕組みを開発する必要があります。
トランザクション機能を持つものには BDB(Berkeley DB)と InnoDB というテーブルタイプがあります。 BDB の方はページ単位のロックですが、 InnoDB は行単位のロックをサポートしています。
そこでここでは InnoDB を標準のテーブルタイプとして使うようにしておきましょう。そのためには設定ファイルで次のように指定します(以前のバージョンでは default-table-type= でしたが、4.1からこちらの指定方法がデフォルトになりました)。
この指定も [mysqld] セクションに対して行います。
default-storage-engine=InnoDB
なお最初に「テーブル毎にタイプというものがある」と説明したとおり、テーブル作成時のCREATE TABLEで形式を指定できます。ここで説明しているデフォルトテーブルタイプの変更というのは、作成時に形式を指定しなかったときに使われる形式を MyISAM 形式から InnoDB 形式に変えている、ということです。
標準のSQLではテーブル定義は
CREATE TABLE テーブル名 ( 項目定義, ・・・);
といった形ですが MySQL の場合には TYPE= という独自のキーワードがあります。
CREATE TABLE テーブル名 ( 項目定義, ・・・) TYPE= テーブルタイプ;
や
CREATE TABLE テーブル名 TYPE= テーブルタイプ ( 項目定義, ・・・);
といったようにテーブル毎に形式を指定できます(私はテーブル名とテーブルタイプの対応がすぐに分かる、後者の書き方をしています)。
この後に説明するように MySQL の最も基本的な操作は、コマンドプロンプトから MySQL monitor というコマンドラインツールを起動して行います。このときのエラーメッセージ等は英語ですが、これを日本語化します。
日本語メッセージも標準で一応は用意されています。ただし完全に日本語化されているわけではなく、英語も混じっている状態です。それでも日本語メッセージが出れば多少は助けになるでしょう。
MySQL 4.0のときは用意されている日本語メッセージは、文字コードがEUC-JPだけでした。そのままではWindows環境では表示できないので、これをShift-JISに変換しておく必要がありました。
MySQL 4.1からはShift-JISの日本語メッセージも用意されています。そのため4.0のときのような、日本語メッセージ変換処理は必要ありません。環境設定ファイルの [mysqld] セクション内に
language=japanese-sjis
を追加するだけです。
MySQL の起動と停止方法は、OSがNT系(WindowsNT、2000、XP)かそうでないかによって変わります。ただしいずれにしろコマンドプロンプトから行うことになります。
まずNT系でもそうでなくても、どちらでも行えるほうほうです。
起動時は MySQL インストールディレクトリの下にある\binの中の、mysqld.exe を実行します。コマンドプロンプトから
C:\>"C:\mysql\MySQL Server 5.0\bin\mysqld"
としてください。
停止時は MySQL インストールディレクトリの下にある\binの中の、mysqladmin.exe に引数に shutdown を指定して実行します。コマンドプロンプトから
C:\>"C:\mysql\MySQL Server 5.0\bin\mysqladmin" -u root shutdown
としてください。
NT系のOSのときはNTサービスになっているので、起動はコマンドプロンプトから
C:\>net start MySQL5
停止するときは
C:\>net stop MySQL5
としても起動・停止ができます。
==> 「
MySQLの操作 」に続く