2007-5-4更新 2003-11-22作成

 ■MySQL インストール・設定

 ここでは MySQLを
・Windows環境にインストールし
・Javaから(トランザクション機能を含めて)使用し
・日本語データを扱える
ところまでの最低限の設定について説明します。

 ここの内容は「私はこうしたら出来た」という意味合いが強いので、もしかするとより良い方法があるかもしれません。

 ■MySQL最新版の場所

 MySQLの最新版は、http://dev.mysql.com/downloads/mysql/4.1.htmlにあります(このページでは4.0系列を対象にしていますが、MySQL4.0は既に消え、4系列はMySQL4.1のみ公開です)。
 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 v4.1 というタイトルがあります。この中の「HTML, Page/chapter」のZip形式を選択してダウンロードしましょう(「HTML Single page」はやめた方がいいです。巨大な1つのHTMLファイルになってて、検索などしにくいですから)。

 ■インストール手順

 ◇MySQLのインストール

 ダウンロードしてきたファイルはZIP形式で圧縮されています(例:mysql-4.1.7-win.zip)。どこかに一時的なディレクトリを作成し、そこにダウンロードしてきたファイルを展開します(例:C:\TEMP\mysql-4.1.7-win\)。ディレクトリ付きで圧縮されているので、そのまま一時的な作業用ディレクトリに展開すればいいと思います。

 展開すると Setup.exe ファイルが出てくるので、これを実行するとインストールが始まります。
 インストールを開始するとまずMySQLインストール先のディレクトリを聞いてきます。標準では C:\mysql にインストールされます。インストール先ディレクトリを変更するときは「Browse」ボタンを押して、インストール先ディレクトリを指定します。



 それからインストール形式を聞いてきますが、これは標準の「Typical」でいいでしょう。


 WindowsNT、2000、XPの場合 MySQL はNTサービスとしてインストールされます。「スタートアップの種類」は「自動」になっているので、OS起動時に自動的に MySQL が起動されます。ただここではサーバーJava学習環境としてMySQLを利用することを考えているため、常にMySQLが起動されている状態は好ましくないかもしれません。私もそうしてますが、サービスの「スタートアップの種類」を「手動」に変えたほうがいいと思います。
 サービスの種類を変える場合は、「スタートメニュー」−「設定」−「コントロールパネル」−「管理ツール」−「サービス」と進み(Win2000のとき)、サービス一覧からMySqlを選択してください。そして「プロパティ」を開き、「スタートアップの種類」を「手動」に変えます。

 ◇MySQLの設定

 MySQLをインストールすると、標準では C:\mysql\bin にwinmysqladmin.exeというファイルがあります。これはMySQLの管理ツールでこれを利用してMySQLの設定が出来るのですが、その説明は後に回します。まずは地道に直接設定ファイルを変更して設定する方法について説明していきます(以下に説明する内容はツールを使ったとしても、結局同じ設定操作をする必要があります)。

 MySQLの起動パラメータによる環境設定は my.ini または my.cnf という名前のテキストファイルにより行います。 my.ini ファイルはWindowsのシステムディレクトリ(C:\WINDOWS や C:\WINNT 、環境変数 windir が指す場所ディレクトリです)に、MySQLインストール時に作成されています。
 my.cnf はCドライブのルートに、C:\my.cnf を作成することになります。

 設定ファイルに変更を加える際、行の先頭が # で始まる行は注釈行として扱われます。何のための設定か後で分からなくならないよう、注釈も入れておくことをお勧めします。あるいは一時的に設定を変えるときなどにこれを活用してください。

 なお設定ファイルの順番は、先に my.ini ファイルを見て次に my.cnf ファイルを見にいきます。
 また以下の説明では my.ini に対して修正を加える方法をとります。

 ・デフォルト文字コードの変更

 テーブルに日本語データを格納するときの文字コードですが、Windows環境ということでShiftJISにしておきましょう。設定ファイル( my.ini もしくは my.cnf )に次の2行を加えます。

[mysqld]
default-character-set=sjis


 ここで [mysqld] というのは、これ以降の設定がMySQLサーバー全体に対するものであることを表すセクション開始の意味になります。

 ・デフォルトテーブルタイプの変更

 MySQLは検索性能重視のデータベースサーバーです。特徴としてテーブル毎にタイプというものがあり、それによって機能が変わってきます。

 標準では MyISAM というテーブルタイプが使われます。これは安全性を保った上で最も高速な形式です。ただし通常のトランザクション管理機能はもっていません。

 HEAP というテーブルタイプは最も高速です。それはメモリ中にテーブルを保持しているためです。ですから一時テーブルや、マスタ系コードテーブルなど業務時間中に更新が入らないテーブルに使うことがあります。メモリ中にテーブルを持つので容量に制限がありますし、ディスクに保存するときは別途そのための仕組みを開発する必要があります。

 トランザクション機能を持つものには BDB(Berkeley DB)と InnoDB というテーブルタイプがあります。 BDB の方はページ単位のロックですが、 InnoDB は行単位のロックをサポートしています。
 そこでここでは InnoDB を標準のテーブルタイプとして使うようにしておきましょう。そのために設定ファイルに次の行を追加します。

default-table-type=InnoDB


 なお最初に「テーブル毎にタイプというものがある」と説明したとおり、テーブル作成時のCREATE TABLEで形式を指定できます。ここで説明しているデフォルトテーブルタイプの変更というのは、作成時に形式を指定しなかったときに使われる形式を MyISAM 形式から InnoDB 形式に変えている、ということです。

 標準のSQLではテーブル定義は
CREATE TABLE テーブル名 (項目定義, ・・・);
といった形ですが MySQL の場合には TYPE= という独自のキーワードがあります。
CREATE TABLE テーブル名 (項目定義, ・・・) TYPE=テーブルタイプ;

CREATE TABLE テーブル名 TYPE=テーブルタイプ (項目定義, ・・・);
といったようにテーブル毎に形式を指定できます(私はテーブル名とテーブルタイプの対応がすぐに分かる、後者の書き方をしています)。

 ・メッセージの日本語化

 この後に説明するように MySQL の最も基本的な操作は、コマンドプロンプトから MySQL monitor というコマンドラインツールを起動して行います。このときのエラーメッセージ等は英語ですが、これを日本語化します。
 日本語メッセージも標準で一応は用意されています。ただし完全に日本語化されているわけではなく、英語も混じっている状態です。それでも日本語メッセージが出れば多少は助けになるでしょう。
 なお用意されている日本語メッセージは文字コードがEUC-JPなのでそのままではWindows環境では表示できません。そこでこれをShift-JISに変換しておく必要があります。

 エラーメッセージの場所はMySQLインストールディレクトリの下にある、\share\japanese\の下です。C:\mysql\share\japanese\errmsg.txt がそのファイルです。
 これを文字コード変換が可能なエディタで、文字コードにEUCを指定するか自動認識させて読み込み、保存するときに文字コードをShift-JISに変換して保存します。念のためファイル名は errmsg_SJIS.txt に変えて保存しましょう。

 次にこの変更後のerrmsg.txtからerrmsg.sysを作成します。
 手順はまずコマンドプロンプトを表示して、ディレクトリを日本語メッセージのディレクトリに移動し、mysql\binにある comp-err.exe を実行します。 comp-err.exe の第一引数にはエラーメッセージソース、第二引数にはコンパイル後メッセージのerrmsg.sysを指定します。


C:\>
C:\>cd c:\mysql\share\japanese
C:\mysql\share\japanese>

C:\mysql\share\japanese>c:\mysql\bin\comp-err errmsg_SJIS.txt errmsg.sys
Found 238 messages in language file c:\mysql\share\japanese\errmsg.sys

C:\mysql\share\japanese>


 これでShiftJISの日本語エラーメッセージが作成されました。
 なおMySQLのバージョンを上げたり再インストールしたあとも日本語メッセージにしたいときは、この作業を忘れずに行ってください。

 それから環境設定ファイルに

language=japanese

を追加します。


以上の
・文字コードの変更
・テーブルタイプの変更
・エラーメッセージの日本語化
を行うために変更した my.ini を例示すると、

[WinMySQLAdmin]
Server=C:/mysql/bin/mysqld-nt.exe

[mysqld]
default-character-set=sjis
default-table-type=InnoDB
language=japanese

となります。

 ■起動と停止

 MySQL の起動と停止方法は、OSがNT系(WindowsNT、2000、XP)かそうでないかによって変わります。ただしいずれにしろコマンドプロンプトから行うことになります。

 まずNT系でもそうでなくても、どちらでも行えるほうほうです。
 起動時は MySQL インストールディレクトリの下にある\binの中の、mysqld.exe を実行します。コマンドプロンプトから

C:\>C:\mysql\bin\mysqld

としてください。

 停止時は MySQL インストールディレクトリの下にある\binの中の、mysqladmin.exe に引数に shutdown を指定して実行します。コマンドプロンプトから

C:\>C:\mysql\bin\mysqladmin -u root shutodown

としてください。


 NT系のOSのときはNTサービスになっているので、起動はコマンドプロンプトから

C:\>net start mysql

停止するときは

C:\>net stop mysql

としても起動・停止ができます。

 ■MySQLの操作

 MySQL の最も基本的な操作は、コマンドプロンプトから MySQL monitor というコマンドラインツールを起動して行います。これはMySQLインストールディレクトリ\binにある、mysql.exe を実行します。


C:\>C:\mysql\bin\mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.16-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>


 MySQL monitor を終了するときは EXIT コマンドもしくは QUIT コマンドを入力してください。


mysql> exit
Bye

C:\>


 この MySQL monitor 上からSQLを発行することにより、テーブルの作成(CREATE TABLE)、データ操作(INSERT、DELETE、UPDATE)、データ照会(SELECT)・・・が行えます。Oracle経験者の人にとっては「SQL Plusと同じようなもの」といえば話が早いでしょう。

 ・DATABASEの作成

 ここで作成済みのDATABASEを表示してみましょう。そのためには MySQL の SHOW コマンドを使います。


mysql> show databases;
+----------+
| Database |
+----------+
| mysql    |
| test     |
+----------+
2 rows in set (0.01 sec)

mysql>


 この mysql と test というのは標準で作成済みの、サンプルDATABASEになります。 test DATABASE をそのまま使ってもいいんですが、自分用にもう一つDATABASEを定義することにします。


mysql> create database test_db;
Query OK, 1 row affected (0.01 sec)

mysql>


 これで test_db というDATABASEが作成されました。もう一度 SHOW コマンドで確認してみてください。これからはこれを使って説明していきます。

 ・DATABASEへの接続

 次にTABLEの作成に移るのですが、その前にどのDATABASEにTABLEを作成するかという問題があります。 SHOW DATABASES; コマンドで見たように、この段階でDATABASEは3つあり、そのどれを対象にTABLEを作成するか、ということです。
 そのために対象とするDATABASEに接続をします。

・方法1
 コマンドプロンプトから MySQL monitor を起動するときに、引数として接続先DATABASEを指定する。
 今作成した test_db に接続するときは
C:\>C:\mysql\bin\mysql test_db
と入力します。


・方法2
 既に引数を指定しない状態で MySQL monitor が起動されているときは、 CONNECT コマンドにより対象DATABASEに接続します。


mysql> connect test_db
Connection id:    3
Current database: test_db

mysql>


 CONNECT コマンドは、現在接続中のDATABASEから別のDATABASEに接続先を変えたいときにも使えます。

 ・TABLEの作成

 次にTABLEの作成に移ります。他のRDBを経験している人は「TABLESPACEは?」と思うかもしれません。 MySQL にはTABLESPACEという考え方はありません。DATABASEを作成後は、すぐにTABLE作成に移ります。
 TABLE作成のSQL(CREATE TABLE)は、前に述べたテーブルタイプの指定を除いて標準SQLととくに変わりません。デフォルトテーブルタイプは InnoDB にしてあるので、特に指定する必要はないでしょう。

 CREATE TABLEのSQLで、MySQL独自キーワードでちょっと便利なのが IF NOT EXISTS です。
CREATE TABLE IF NOT EXISTS テーブル名 (項目定義, ・・・);
とすると、そのテーブル名が存在しないときだけ作成されます。

 ・データ操作

 TABLEを作成したら後はデータ操作系のSQLでデータを作成しましょう。


 さてここまでは MySQL monitor 上で対話的にコマンドやSQLを入力してきました。しかしこれではある処理を再実行したいとき、TABLEをDROPして再作成したりINSERTでデータを入力したりするときに不便です。

 そのためにSQLをテキストファイルに記述しておいて一括実行する方法があるので、これを説明しておきます。

 まずSQL文を拡張子 .sql のテキストファイルで事前に作成しておき、これを任意のディレクトリ(例ではC:\WORK\SQL)に置いておきます。

・方法1
 MySQL monitor を起動する代わりに、mysql.exeをバッチモードで実行します。第一引数に接続先DATABASE、第二引数にこのファイル名を指定することによりSQLを実行させることができます。コマンドプロンプトから

C:\>C:\mysql\bin\mysql test_db < C:/WORK/SQL/SQLファイル名.sql

としてください。
 ここで注意が必要なのがSQLファイルを指定するパス名で、通常WindowsやDOS環境ではディレクトリ名区切りには \ を使いますが、 MySQL monitor のときは \ の代わりに / を使うことです。

・方法2
 次はMySQL monitorを実行中にテキストファイルに記述したSQLを一括実行する方法です。
 この場合はMySQL monitorの source コマンドを使用し、 source SQLファイル名; とします。MySQL monitorのコマンドとして入力するため、最後にコマンド終了を表す ; を付けることを忘れないでください。例えば

mysql> source C:/WORK/SQL/SQLファイル名.sql;

となります。
 この方法2でも方法1と同様、SQLファイルを指定するパス名には、 \ の代わりに / を使います。


このページの先頭  技術メモ先頭  サーバーJava入門先頭  MySQL編先頭

Copyright © 2003-2004 YOK. All Rights Reserved.