windows 2000にEthnaを入れる・つづき2

日付が変わってしまったのでエントリも日付を改めまして。というか今日はPEAR+mysqlの動作確認が限界だな。

まずはethna用のmysqlの設定。

C:\php>mysql -uroot -p
...
mysql> create database ethna;
mysql> grant all on ethna.* to ethna@localhost identified by 'ethna';

つづいて PEAR の DB を入れる。

C:\php>pear install DB

さらに次のようなスクリプトをでっちあげ、 C:\Documents and Settings\ichii386\My Documents\htdocs\mysql.php とかに保存する。

<?php

require_once 'DB.php';
$conn = &DB::connect('mysql://ethna:ethna@localhost/ethna');
if (PEAR::isError($conn)) {
    echo $conn->getMessage();
    exit;
}

$sql =<<<EOS
CREATE TABLE IF NOT EXISTS message (
    id  INT NOT NULL AUTO_INCREMENT,
    msg VARCHAR(255) NOT NULL DEFAULT '',
    PRIMARY KEY id (id),
    KEY         msg (msg)
)
EOS;
$res = &$conn->query($sql);
if (PEAR::isError($res)) {
    echo $res->getMessage();
    exit;
}

$sql =<<<EOS
INSERT INTO message (msg) VALUES ('testtest')
EOS;
$res = &$conn->query($sql);
if (PEAR::isError($res)) {
    echo $res->getMessage();
    exit;
}

$sql =<<<EOS
SELECT id, msg FROM message
EOS;
$res = &$conn->query($sql);
if (PEAR::isError($res)) {
    echo $res->getMessage();
    exit;
}
header("Content-type: text/plain;\n");
while (($row = $res->fetchRow(DB_FETCHMODE_ASSOC)) !== null) {
    echo 'id = '.$row['id'].', msg = '.$row['msg']."\n";
}

$conn->disconnect();
exit;
?>

うまくいくかとドキドキするわけですが、"DB.php"が見つかんない、みたいなエラー。さっきinclude_pathを自動で修正してくれたままapacheを再起動してなかった。でやり直すと今度は

DB Error: connect failed

ですって。はあ??

仕方ないので

$res = mysql_connect('localhost', 'ethna', 'ethna');
echo mysql_error($res);

してみると、

Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in ...

ですか...。このあいだ作ったtest.phpでphpinfo()を見てみると、ありましたよ。libmysqlclientのバージョンが古すぎ。

Client API version 	3.23.49

うーん、oldpassword使うのはあんま本質的な解じゃないよな。windowsだとどっかからdll落として突っ込めば済むんでしょうか。とりあえずググってみると、http://dev.mysql.com/downloads/connector/php/ というのを見つけたけれど、どうもphp5用のしかないみたい。うー、とりあえずoldpasswordにしよう。

とりあえずパスワード作りなおし。

mysql> update user set Password = old_password('ethna') where Host = 'localhost' and User = 'ethna';

続いて C:\Program Files\MySQL\MySQL Server 4.1 にある my.ini を開いて、[mysqld] のうしろあたりに old-passwords を追加。

[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306
old-passwords   # added

さて、mysqlはどうやって再起動するんだ? コンピュータの管理のサービスのとこか。

これでようやく動くようになった。http://ethna.localhost/mysql.php にアクセスるたびに

id = 1, msg = testtest
id = 2, msg = testtest
id = 3, msg = testtest
id = 4, msg = testtest

ってかんじでinsertされるようになりました。

ほんと長い道のり。まだ入り口にも達してないです。つーかマジwindowsめんどいです。もうめげそう。

次回こそはethnaを入れるぞ!