MySQLのインストール/動作確認手順

更新日:2003.1.02
作成日:2001.6.16

  1. ダウンロード
    ・MySQLのダウンロードページ http://www.mysql.com/downloads/index.htmlMySQL Community Edition -- Database server and client 欄に (recommended) と書かれたものが最新安定バージョンである。2003.4に 3.23 から 4.0 に、2004.10に 4.1に、さらに 2005.10に 5.0に変わった。5.1も配布されているがこれはαテスト版である。

    ・これだけ沢山のバージョンがあると、どのバージョンを使えばいいのか決めるのが悩ましいところである。通常プログラムは recommended とある最新のものを選べば問題は少ないのだが、OS(基本ソフト)や DBのようなミドルウェアは必ずしも新しいものがいいとは限らない。既存のアプリケーションが新しいバージョンに対応するには時間がかかるし、使い込まれてバグやセキュリティホールなどがなくなった旧版の方が安心して運用できる。

    ・機能的には 3.23と4.0、4.1と5.0が近い関係にあり、4.0から 4.1へは大幅な機能変更があるそうである。また、4.1にはパスワードが認識エラーになる問題と文字化けの問題がある。パスワードの方は
     set password for root@localhost=old_password('********');
    のようなコマンドを一度実行すれば簡単に解決するが、文字化けの方は MySQLを使いこなそうとするほど悩まされることになる可能性大である((XOOPSや MovableTypeにしか MySQLを使わないというのであれば特に問題はないかもしれない)。さらに、4.1は 5.0へのつなぎの位置付けのバージョンであるとも言われているそうだ。

    ・このようなことを考えると、筆者はこれから新規にインストールするのであれば 4.0をインストールすることをお勧めする。1年くらい使ってみてバージョンアップするときには、4.1はパスし、5.0を選ぶのがいいのではないかと思う。もちろん、自己解決能力のある人なら最初から 5.0でも一向に構わない。ただし、4.1という選択肢はないと思う(くどいですが)。

    4.0のダウンロードのページの Windows downloads で、Windows(x86) の Pick a mirror の Mirrors in: Japan から zip ファイルをダウンロードする。2005.9 現在 mysql-4.0.26-win.zip(25.4MB) が最新版である(メンテされている限り 4.0でも何の心配もないという証拠でもある)。

  2. インストール
    ・ダウンロードしたzipファイルをテンポラリフォルダに解凍し、SETUP.EXEを実行する。
    ・「Choose Destination Location」が表示されたらインストール先をC:\mysqlとする。
    ・「Setup Type」が表示されるとインストールタイプを指定する。デフォルトの「Typical」のままでよい。
    ・C:\mysql\bin\winmysqladmin.exeを起動する。
    ・最初の起動でダイアログが表示されるが、任意のユーザ名とパスワードを入力する。
    ・Windowsディレクトリ(Win95/98/XPは C:\Windows、WinNT/2000は C:\Winnt)に my.ini ファイルが作成される。また、タスクトレイに信号機のアイコンが表示され、緑が点灯していれば MySQLサーバが動いていることが分かる。NT系ではサービスとして動作する。

  3. 動作確認
     DBサーバが動いていることを以下のようにコマンドラインから確認する。

    ・コマンドプロンプトで、カレントディレクトリをMySQLをインストールしたディレクトリ下のbinに移動する。
    C:\>cd \mysql\bin
    
    ・ここで以下のコマンドを実行。
    C:\mysql\bin\>mysql test
    
    ・以下のメッセージが出てSQLコマンドの実行が可能となる。
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 3 to server version: 4.0.22-nt
    
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer
    
    ・テスト用のテーブルの作成。
    mysql> create table addrbook (name varchar(50),telno varchar(50), email varchar(50));
    Query OK, 0 rows affected (0.10 sec)
    
    ・続けてテスト用のデータの作成。
    mysql> insert into addrbook (name,telno,email) values ('Taro.Yamada','090-1234-5678','taro@hoga.ne.jp');
    Query OK, 1 row affected (0.01 sec)
    
    mysql> insert into addrbook (name,telno,email) values ('Hanako.Yamada','090-1111-9999','hanako@hoga.ne.jp');
    Query OK, 1 row affected (0.00 sec)
    
    ・登録されたデータの表示。
    mysql> select * from addrbook;
    +---------------+---------------+-------------------+
    | name          | telno         | email             |
    +---------------+---------------+-------------------+
    | Taro.Yamada   | 090-1234-5678 | taro@hoga.ne.jp   |
    | Hanako.Yamada | 090-1111-9999 | hanako@hoga.ne.jp |
    +---------------+---------------+-------------------+
    2 rows in set (0.00 sec)
    
    mysql>
    
    以下のような日本語データも入力しておくと後で文字化けしないかどうかテストできる。
    mysql> insert into addrbook (name,telno,email) values ('山田花子','090-1111-9999','hanako@hoga.ne.jp');
    
    ・これで動作確認完。mysqlコマンドを終了する。
    mysql> quit (あるいは \q)
    Bye
    
  4. Perlからのアクセス(PHPからだけMySQLにアクセスするのであればPerlに関するこの部分の説明は読みとばして 5.PHPからのアクセス に進んで構いません)
    ・PerlからMySQLにアクセスするにはDBアクセス用のパッケージをインストールする必要がある。
     コマンドプロンプトを開いて以下に示すコマンドを実行する。
     このインストールでは、インターネットにアクセスするのであらかじめ回線接続する。
     もし、プロクシを通してインターネット接続しているなら、コマンドプロンプトから以下の環境変数を設定する(サーバ名、ポートは環境に合わせること)。
        set HTTP_PROXY=http://192.168.0.2:8080
    (注)以下のコマンドを実行するためには、C:\Perl\binにパスが通っていること(実行されるコマンドは C:\Perl\bin\ppm.bat)。
    C:>ppm
    PPM interactive shell (2.1) - type 'help' for available commands.
    
    ・まずはDBIパッケージをインストールする。
    PPM> install DBI
    Install package 'DBI?' (y/N): y
    Retrieving package 'DBI'...
    Installing C:\Perl\site\lib\auto\DBI\DBI.dll
    Installing C:\Perl\site\lib\auto\DBI\DBI.exp
    Installing C:\Perl\site\lib\auto\DBI\DBI.lib
    Installing C:\Perl\site\lib\auto\DBI\dbipport.h
    Installing C:\Perl\site\lib\auto\DBI\DBIXS.h
    Installing C:\Perl\site\lib\auto\DBI\dbi_sql.h
    Installing C:\Perl\site\lib\auto\DBI\Driver.xst
    Installing C:\Perl\site\lib\DBI.pm
    Installing C:\Perl\site\lib\DBI\DBD.pm
    Installing C:\Perl\site\lib\DBI\FAQ.pm
    Installing C:\Perl\site\lib\DBI\Shell.pm
    Installing C:\Perl\site\lib\DBD\ADO.pm
    Installing C:\Perl\site\lib\DBD\ExampleP.pm
    Installing C:\Perl\site\lib\DBD\Multiplex.pm
    Writing C:\Perl\site\lib\auto\DBI\.packlist
    PPM>
    
    ・続いてDBD-mysqlパッケージをインストールする。
    (注) Perlのバージョンによっては DBD-mysql ではなく DBD-Mysql としないといけないことがあるようである。失敗したときは両方を試すとよいかもしれない。
    PPM> install DBD-mysql
    Install package 'DBD-mysql?' (y/N): y
    Retrieving package 'DBD-mysql'...
    Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.bs
    Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.dll
    Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.exp
    Installing C:\Perl\site\lib\auto\DBD\mysql\mysql.lib
    Installing C:\Perl\site\lib\Mysql.pm
    Installing C:\Perl\site\lib\Mysql\Statement.pm
    Installing C:\Perl\site\lib\DBD\mysql.pm
    Installing C:\Perl\site\lib\Bundle\DBD\mysql.pm
    Installing C:\Perl\bin\dbimon
    Installing C:\Perl\bin\dbimon.bat
    Writing C:\Perl\site\lib\auto\DBD\Mysql\.packlist
    PPM>
    
    ・(注)PPM> install DBI や PPM> install DBD-mysql で以下のエラーが出る場合は、ネットワーク接続されているか(必要ならこの上で説明した HTTP_PROXY が設定されているか)どうかを確認する。
    Error installing package 'DBI': Could not locate a PPD file for package DBI
    
    どうしてもだめなら、下記URLから DBI.zip と DBD-mysql.zip をダウンロードする。
    http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/(ActivePerl 5.8.x Build 8xx用)
    http://ppm.activestate.com/PPMPackages/zips/6xx-builds-only/(ActivePerl 5.6.x Build 6xx用)
    http://ppm.activestate.com/PPMPackages/zips/5xx-builds-only/(ActivePerl 5.005 Build 5xx用)
    
    上記でダウンロードした二つの zipファイルを例えば C:\temp\dbi と C:\temp\dbd-mysql にディレクトリ付で解凍し、カレントディレクトリをそれぞれ以下のように移動後、ppm コマンドを実行するとうまくいく。
    C:\temp\dbi> ppm install DBI.ppd
    C:\temp\dbd-mysql> ppm install DBD-mysql.ppd
    
    ・インストールが完了したらppmを終了する。
    PPM> quit
    Quit!
    
    (注1) 5.8.xでは「Install package 'DBI?' (y/N):」のような問い合わせなく、インストールが実行されます。表示されるリストも異なります。

    (注2) ActivePerl 5.6.1 build 635で DBD-mysql をインストールしよとすると以下のようなエラーになったという質問をメールでもらいました。(2003.2.28)
    PPM> install DBD-mysql
    Install package 'DBD-mysql?' (y/N): y
    Installing package 'DBD-mysql'...
    Error installing package 'DBD-mysql': Read a PPD for 'DBD-mysql', but it is not intended for this build of Perl (MSWin32-x86-multi-thread)
    
    Perlのクリーンインストール
    http://homepage1.nifty.com/yito/anhttpd/env.html#perl_install
    や、PPM.pmの書き替え
    http://www.namazu.org/ml/namazu-win32-users-ja/msg00886.html
    などを試してもらったのですが、状況は変わらず。
    Googleで検索するとこのエラーは沢山みつかるのですが、結局解決方法は分からず、ActivePerl 5.8.0 ならインストールできたというようなことがありました。通常は起きないのでかなり特殊なケースではないかと思うのですが、原因不明のままです。(ここまで 注2)

    ・以下のソースを /cgi-bin下に mysql.cgiという名前で保存する。ソースのダウンロードはこちらから右クリックで保存(注:拡張子は txtになっています)。$user と $passwd は必要に応じて変更を。
    #! /usr/local/bin/perl
    
    use DBI;
    $dbname = "test";
    $user = "root";
    $passwd = "";
    $tbname = "addrbook";
    $host = "localhost";
    #
    #    DBオープン
    #
    $db = DBI->connect("DBI:mysql:$dbname;host=$host", $user, $passwd) || die "DBI connect failed : $DBI::errstr";
    
    #
    #    SELECT実行
    $st = $db->prepare("SELECT name,telno,email from $tbname");
    $res = $st->execute;
    
    print <<HEADER;
    Content-type: text/html
    
    <html>
    <head>
    <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
    <title>簡易アドレス帳(MySQL-Perl)</title>
    </head>
    <body>
    <table border=1>
      <caption>簡易アドレス帳(MySQL-Perl)</caption>
      <tr>
        <th>名前</th>
        <th>電話番号</th>
        <th>メールアドレス</th>
      </tr>
    HEADER
    
    while(@res = $st->fetchrow) {
      print <<ROW;
      <tr>
        <td>$res[0]</td>
        <td>$res[1]</td>
        <td>$res[2]</td>
      </tr>
    ROW
    }
    
    print <<FOOTER;
    </table>
    </body>
    </html>
    FOOTER
    
    #
    #    結果解放
    #
    $st->finish;
    
    #
    #    DBクローズ
    #
    $db->disconnect;
    
    1;
    

    ・ブラウザで「http://マシン名/cgi-bin/mysql.cgi」にアクセスし、以下のような表示が出れば OK である。
    簡易アドレス帳(MySQL-Perl)
    名前 電話番号 メールアドレス
    Taro.Yamada 090-1234-5678 taro@hoga.ne.jp
    Hanako.Yamada 090-1111-9999 hanako@hoga.ne.jp
  5. PHPからのアクセス
    ・以下のソースを mysql.php という名前で /cgi-bin 下に保存する。ソースのダウンロードはこちらから右クリックで保存(注:拡張子は txtになっています)。$user と $passwd は必要に応じて変更を。
    <html>
    <head>
    <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
    <title>簡易アドレス帳(MySQL-PHP)</title>
    </head>
    <body>
    <?php
    $dbname = "test";
    $user = "root";
    $passwd = "";
    $tbname = "addrbook";
    $host = "localhost";
    
    $db = mysql_connect("$host", "$user", "$passwd");
    if (!$db){
        echo "データベースの接続でエラーが発生しました<BR>\n";
        exit;
    }
    
    mysql_select_db($dbname);
    $sel = mysql_query("SELECT name,telno,email FROM $tbname");
    if (!$sel) {
        echo "検索でエラーが発生しました<BR>\n";
        exit;
    } 
    
    echo "<table border=\"1\">\n";
    echo "  <caption>簡易アドレス帳(MySQL-PHP)</caption>\n";
    echo "  <tr><th>名前</th><th>電話番号</th><th>メールアドレス</th></tr>\n";
    
    while ($row = mysql_fetch_row ($sel)) {
        echo "  <tr>\n";
        echo "    <td>".$row[0]."</td>\n";
        echo "    <td>".$row[1]."</td>\n";
        echo "    <td>".$row[2]."</td>\n";
        echo "  </tr>\n";
    }
    echo "</table>\n";
    
    mysql_free_result ($sel);
    mysql_close($db);
    ?>
    </body>
    </html>
    

    ・ブラウザで「http://マシン名/cgi-bin/mysql.php」にアクセスし、Perlの場合と同様な表示が出れば OK である。

    (注) PHP5では、php.iniで extension=php_mysql.dll を設定する必要がある(1桁目の ; を削除)。PHP4のときの php.iniのままなら、この行はないので追加すること。
     PHP5の他の設定については以下を参考に

     http://homepage1.nifty.com/yito/anhttpd/faq/php5.html

  6. 日本語表示
    ・MySQLで日本語を扱うためには、my.ini(Win9xでは c:\windows 下にある) に以下のように default-character-set=sjis 行を追加する。この行がなくても一見日本語がうまく入力できたように思えるかもしれないが、「ソ」「構」「能」「表」など 5C のコードを含む文字 が文字化けを起こすという現象が発生する。
    [mysqld]
    basedir=C:/MYSQL
    datadir=C:/MYSQL/data
    default-character-set=sjis
    [mysql]
    default-character-set=sjis
    [mysqldump]
    default-character-set=sjis
    [WinMySQLadmin]
    Server=C:/MYSQL/bin/mysqld-opt.exe (NT系では mysqld-nt.exe)

    ・my.iniを上記のように変更しただけでは以下のエラーが表示されるようになる。
    File 'c:\mysql\\share\charsets\sjis.conf' not found (Errcode: 2)
    Character set '#13' is not a compiled character set and is not specified in the 'c:\mysql\\share\charsets\Index' file
    (注) PHP4.3.2以降では \\ の個所は \ になる。
    
    ・これは sjis.conf ファイルがないからであり、SoftAgencyのページによると、sjis を使えるようにバイナリを作成し直せば解決するとあるが、Windows ユーザにはちょっときつい注文のように思える。

    ・sjis.conf を c:\mysql\share\charsets に置けば解決しそうだが、 sjis.conf は Google で検索しても見つからない(どなたか持ちあわせておられませんか?)。

    ・仕方なく筆者は配布されている MySQL のソースの中の ctype-sjis.c を見て、sjis.conf を手作りした。ただし、単に上部の配列の個所をコード化しただけであり、下部のプログラム処理している部分は無視している。従って合っているという保証はなく、テスト的に使われる方だけダウンロードし c:\mysql\share\charsets に置いてお使いください(上記ファイルは拡張子 txt を付け sjis.conf.txt になっています)。

    (追記) 上記のエラーは MySQLに問題がある訳ではなく、PHP側の問題であり PHPでアクセスした場合にだけ出る。もし MySQLを c:\mysql 以外にインストールしたのなら、PHPは c:\mysql\share\charsets を見に行くので必ず Cドライブにこの通りのフォルダを作成し、sjis.conf と Indexファイル(charsetsの下にあるIndexのこと)だけは置く必要がある(他の *.conf はあってもなくても構わない)。
    MySQLへのアクセスで beep(ビープ)音が鳴るとき、これによって鳴り止む場合がある。
    PHP5ではこの現象は発生しないので sjis.conf は不要である。(ここまで追記)

    (追記2) MySQL 4.1でもこの現象は起きるようである。ところが MySQL 4.1と 4.0では Indexファイルの作りが全く違う(4.1の Indexファイルは XMLになっている)ので、4.1に sjis.confをコピーしただけではだめである。PHP4が理解できるのは MySQL 4.0の Indexファイルなのである。不幸にも MySQL 4.1をインストールしてしまった人の対応策としては、
    (1) MySQL 4.1ではなく 4.0をインストールし直す。
    (2) どうしても MySQL 4.1を使いたいなら、PHP5にする。
    (3) 幸い MySQL 4.1を C:\mysql 以外にインストールしたのであれば、sjis.confと 4.0の Indexファイルを C:\mysql\share\charsetsにコピーする。
    (4) MySQL 4.1を C:\mysql にインストールしたときに、C:\mysql\share\charsets\Index を 4.0 のものに置き換えるとどういう動作になるのかは分からないが、興味があれば 4.1の Indexをファイル名を変更して残したまま、試してみてはどうか。(ここまで追記2)

  7. phpMyAdmin のインストール
     phpMyAdminを使うとブラウザ上からMySQLのDB管理が可能となり、なかなか便利なツールである。
    phpMyAdmin のインストール手順は以下の通りである。

    ・The phpMyAdmin projectのページ http://www.phpmyadmin.net/ から phpMyAdmin-2.x.x-php.zip の最新版をダウンロードする。Latest stable version となっている方がいい。2005.3現在、phpMyAdmin-2.6.1-pl3.zip が最新版である。

    ・上でダウンロードしたファイルを適当なフォルダに解凍後、トップのフォルダ名をphpMyAdmin-2.x.x -> phpMyAdmin と変更し、例えばドキュメントルート(C:\www)下に移動する(C:\www\phpMyAdmin となる)。

    ・C:\www\phpMyAdmin\config.inc.php の39行目(バージョンで前後する可能性有)を
     $cfg['PmaAbsoluteUri'] = 'http://自マシンのIPアドレス/phpMyAdmin/';
    (phpMyAdminがドキュメントルート下でないときは適当に変更する。
    IPアドレスを 127.0.0.1 としたのでは他のマシンからはアクセスできない。
    IPアドレスではなくホスト名にする時は DNS登録や hostsファイルの設定が必要)

    さらに、83行目(バージョンで前後する可能性有)の 'config' を以下のように 'http' に変更し、保存する。
     $cfg['Servers'][$i]['auth_type'] = 'http';

    ・winmysqladmin.exe を実行後、http://IPアドレス/phpMyAdmin/index.php
    にアクセスすると(オプション/一般のデフォルトインデックスを「index.html,index.php」とすると http://IPアドレス/phpMyAdmin/ でもよい)「ユーザ名/パスワード」入力ダイアログが表示される。デフォルトでは「ユーザ名」root、「パスワード」なしでアクセス可能。また、「ユーザ名」任意、「パスワード」なしでもアクセスできるが後者の場合には 特権の設定 がないので操作は制限される(と思う)。認証に成功すると Welcome ページが表示される。root/パスワードなしはセキュリティホールになるので要変更。

    ・言語(Language)を Japanese(ja-sjis)に変更すると日本語表示になる。その後の使い方は自分で調べてみてください。

    (注)とりあえず動かしてみたいというのであれば、上記の config.inc.php の設定変更なしでもアクセス可能です。ただし以下のようなメッセージが出て、セキュリティ上問題があります。必ず変更してください。
    $cfg['PmaAbsoluteUri'] を必ずconfigファイルの中で設定して下さい!

    あなたのコンフィグレーションファイルの設定がMySQLデフォルトの特権アカウントになっていま す (rootユーザでパスワードなし) 。 MySQLサーバもこのデフォルト設定で動作しているの で、侵入者に対して無防備です。このセキュリティーホールは必ず閉ざして下さい。

  8. XOOPS のインストール
     XOOPSのページを分割しました。AN HTTPDで XOOPS を動かす を参照ください。

  9. Movable Type のインストール
     Movable Typeは Perl で書かれているので、データベースとして MySQLを使うなら上記の「CGI(Perl)からのアクセス」の処理が必要です。Movable Type のインストールについては「Windowsで Movable Typeを動かす」を参考に。

  10. 関連情報へのリンク
     日本MySQLユーザ会
     MySQLマニュアル
     MySQL メーリングリストの検索


 本文書は http://family.millto.net/~molita/mysql.php3 に加筆させていただいた。m(_ _)m
その後アクセスできなくなったので http://moisoft.peko.li/mysql.php3 に引っ越したようだというメールをある方からいただいた(2001.12.7)が、以前のサーバも復活したようである。

作成:いと,mailto:gfh05223@nifty.com