電子書籍の厳選無料作品が豊富!

PHP4.4.1+MySQL4.1.18の環境でMySQLに接続したいのですが、
接続できず困っています。

表示された内容
=============================================
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /Library/WebServer/Documents/ken1.php on line 8

私なりに検索サイトなどで調べた結果、
http://dev.mysql.com/doc/refman/4.1/ja/old-clien …
にたどりつきましたが、
mysql> UPDATE user SET Password = OLD_PASSWORD('mypass')
-> WHERE Host = 'some_host' AND User = 'some_user';
のコマンドがエラーで帰ってきます。

エラー内容
=============================================
ERROR 1046 (3D000): No database selected


PCの環境
Mac OSX 10.3.9
PHP4.4.1
MySQL4.1.18


以上です。
初心者で申し訳ありませんが、
どなたか教えて下さい。

A 回答 (4件)

>ERROR 1046 (3D000): No database selected



普通のMySQLのエラーです。
まず、DBを指定してください。
(たとえば、testdb という名前のデータベースが
あれば)

mysql>USE testdb;

としてから、UPDATEなり、SELECTなり、かましてください。
蛇足ですが、SQLは、大文字・小文字をごちゃ混ぜにしないで、構文は大文字、テーブル名などのオブジェクトは小文字といったように統一したほうがトラブル少なく済みます。


>Fatal error: Call to undefined function mysql_connect()

PHPが、mysql_connect()というなんて関数は知らないと怒っています。
PHP5になってからは、MYSQLとの接続関数として、mysqli (iがつく) がデフォルトで、mysql はそのままでは使えません。mysql_connect()などのmysql 関数は、php.iniで有効にする必要があります。
(また、PHPから、mysqlのライブラリがきちんと見えているかどうかもチェックする必要があります。)

以前は、PHPそのものにmysql用のコネクタがおまけにくっついていたのですが、ライセンス上の問題(MySQLはGPL!)から分離してしまったので、利用者がわざわざMySQLのコネクタをくっつけてあげないといけなくなりました。

MySQL4.1 は、文字コードなどでかなり難航すると思いますが、サブクエリも使えたり、文字コードがテーブルごとに変えられたりと、魅力的な機能もあり、苦労して取り組む価値は十分にあります。

この回答への補足

ご回答ありがとうございます。

php.iniに以下の定義を追加しました
mysql.default_socket = /tmp/mysql.sock
(デフォルトでは"mysql.default_socket ="のみ)


がしかし、PHPの動作チェックをしたところ
Fatal error: Call to undefined function mysql_connect()
と表示されMySQLに接続できません。

>PHPから、mysqlのライブラリがきちんと見えているかどうかもチェックする必要があります
これって、どこで確認できますか?
おそらくphp.infoだと思うのですが。

MySQLに接続するために
モジュール等をインストールする必要や
さらなるphp.iniの改訂の必要があるのでしょうか。
ちなみにmysql.sockがある事は確認しました。

的外れな事を書いてしまっているかもしれませんが、
引き続き、ご協力ください。
宜しくお願いいたします。

補足日時:2006/04/27 16:12
    • good
    • 0

たまたま通りかかったものですが、


こちらのサイトは役に立ちませんか?
解決は9日にしたそうですが・・・・

参考URL:http://mrs.suzu841.com/sfs4_diary/sfs4_diary.cgi …
    • good
    • 0

MacOSは、よく知らないのですが、


PHP5 のインストールは、ソース(tar.gzとかtar.bz2)からのインストールでしょうか。

インストールの
./configure のときに、
--without-mysqli --with-mysql=<MySQLのありか>
と設定する必要があります。

つまり、
mysqli (iがつく) を無効にし、
mysql を有効にする必要があります。

繰り返しになりますが、mysql_connect()は、
mysqli関数(iがつく)ではなく、
mysql関数だからです。

現在のconfigureの内容は、phpinfo()で確認できます。

また、ページを下にスクロールすると、mysqlの太字の文字。その下に設定欄があり、MYSQLのクライアントバージョンなどが表示されます。
    • good
    • 0

PHP4.4.1に付属しているMySQL用のextentionがMySQL4.1に対応していない、というか正しい環境でコンパイルされていないのです。



PHPを5にあげるか、MySQLを3.2に戻すのが早道です。私もxoopsのセットアップ時にWindowsのMySQL4.1のマシンを選んでしまって地獄を見ましたが、結局解決できずそのマシンのMySQLを3.2にダウングレードしています。

この回答への補足

ご回答ありがとうございます。

早速PHPのヴァージョンを5.1.2に上げ同じファイルの動作をチェックしたところ、
Fatal error: Call to undefined function mysql_connect()
というエラーが表示されました。

ううう。どうすればいいんでしょうか。

補足日時:2006/04/26 12:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!