PHP4.4.1+MySQL4.1.18 接続エラー

このQ&Aのポイント
  • PHP4.4.1+MySQL4.1.18の環境でMySQLに接続できず困っています。
  • エラー内容: ERROR 1046 (3D000): No database selected
  • Mac OSX 10.3.9の環境でPHP4.4.1とMySQL4.1.18を使用しています。初心者ですが、どなたか教えてください。
回答を見る
  • ベストアンサー

PHP4.4.1+MySQL4.1.18 接続エラー

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-client.html にたどりつきましたが、 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 以上です。 初心者で申し訳ありませんが、 どなたか教えて下さい。

  • MySQL
  • 回答数4
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

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

mokujin14
質問者

補足

ご回答ありがとうございます。 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がある事は確認しました。 的外れな事を書いてしまっているかもしれませんが、 引き続き、ご協力ください。 宜しくお願いいたします。

その他の回答 (3)

noname#32058
noname#32058
回答No.4

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

参考URL:
http://mrs.suzu841.com/sfs4_diary/sfs4_diary.cgi?action=day&year=2007&month=06&day=07
回答No.3

MacOSは、よく知らないのですが、 PHP5 のインストールは、ソース(tar.gzとかtar.bz2)からのインストールでしょうか。 インストールの ./configure のときに、 --without-mysqli --with-mysql=<MySQLのありか> と設定する必要があります。 つまり、 mysqli (iがつく) を無効にし、 mysql を有効にする必要があります。 繰り返しになりますが、mysql_connect()は、 mysqli関数(iがつく)ではなく、 mysql関数だからです。 現在のconfigureの内容は、phpinfo()で確認できます。 また、ページを下にスクロールすると、mysqlの太字の文字。その下に設定欄があり、MYSQLのクライアントバージョンなどが表示されます。

  • Healer99
  • ベストアンサー率31% (7/22)
回答No.1

PHP4.4.1に付属しているMySQL用のextentionがMySQL4.1に対応していない、というか正しい環境でコンパイルされていないのです。 PHPを5にあげるか、MySQLを3.2に戻すのが早道です。私もxoopsのセットアップ時にWindowsのMySQL4.1のマシンを選んでしまって地獄を見ましたが、結局解決できずそのマシンのMySQLを3.2にダウングレードしています。

mokujin14
質問者

補足

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

関連するQ&A

  • PHPでMYSQLに接続できません

    PHP(4.3.11)でMYSQL(5.0.81)に接続しようとすると接続できず、 Client does not support authentication protocol requested by server; consider upgrading MySQL client というエラーになります。 PHP文はこのように記述しています。 <?php $con = mysql_connect("localhost","root","password"); if (!$con) { print(mysql_error()); exit('データベースに接続できませんでした。'); } ?> my.cnf に old_passwords=1 を記述し、mysqlを再起動したのですが同じエラーでした。 他に設定しなければならない事があるのでしょうか?

  • PHP4からMySQLに接続できません。

    質問です。 PHPから、MySQLを操作したいのですが、 mysql_connect("localhost","user","pass") ですと、 Client does not support authentication protocol requested by server; consider upgrading MySQL client in~ というエラーが、 mysql_connect("localhost","root","") ですと、 Access denied for user 'root'@'localhost' (using password: NO) in~ というエラーがでて、 接続できません。 PHP4.3.10,MySQL4.1を使っており、単独では動作してい ます。 何か分かる人、お願いします。

    • ベストアンサー
    • PHP
  • PHPからmySQLに接続できない

    自宅サーバー(PHP4.3.9+mySQL4.1+Windows2000)で構築を試みています。 PHPからmySQLに接続するのに次のようなソースを試してみました。 <?php $mysql=mysql_connect("localhost","user","password"); if(mysql_select_db("dbname", $mysql)){ print "OK"; }else{ print "NG"; } ?> 次のようなエラーが返りました。 Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\create.php on line Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\create.php on line このエラーについていろいろ調べたのですが、mySQL4.1以降からパスワードのハッシュが変更になっており、PHPからアクセスできないという記事を見つけました。 解決方法としてmySQL起動時に「--old-passwords」オプションをつければよい、という記事だったのですが、 質問1:このエラーは果たしてパスワードの問題なのでしょうか。他に考えられる原因はないでしょうか。 質問2:Windowsの場合、mySQLはサービスとして起動しているのでオプションをどのようにつければいいのかわかりません。 質問3:PHPのバージョンが上がるにつれ、この問題は解決するのかもしれませんが、現段階でPHP側で解決する手段はないのでしょうか。 ちなみにコマンドラインから c:\>c:\mysql\bin\mysqlshow Access denied for 'ODBC'@'localhost'(using password:NO) となります。 コマンドラインからはログインでき、テーブルなどの作成は済んでいます。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • mysqlとphpの接続について

    過去にmysqlとphpの接続についていくつか質問を見ました。 mysqlに接続するだけのphpプログラムなのですが、以下のwarningが出ます。 ------------------------------------------------------------------------------ Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\WWW\mysql.php on line 7 ------------------------------------------------------------------------------ versionの違いによる認証方式でこけているというのを見たのですが、 私の場合 php 4.4.1 mysql 5.0.17 なのですが、どう修正したらよいのでしょうか? このversionだとうまくいくと思っていたのですが。 すみませんが、ご回答御願します。

  • PHP+MySQL 接続できません

    php5・MySQL5.0 の 環境でMySQLに接続したいのですが、 うまくいかずに困っています。 参考書の通りに設定したのですが、どこか間違っていたのでしょうか。 コマンドプロンプトから、CREATE TABLE などの操作は問題なくできます。 sample.php ------------------------------------------- <?php $con = mysql_connect("localhost", "username", "pass") or die("接続できません。"); print "接続に成功しました。"; mysql_close($con); ?> 表示された内容 ------------------------------------------- Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in D:\Apache2\htdocs\sample.php on line 8 接続できません。 どうぞよろしくおねがいします。

    • ベストアンサー
    • MySQL
  • mysqlでphpinfoと実際のバージョンが違う

    PHPでデータベースを使用しており、MySQLを使うことにしました。 その際、 Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:(略).php on line 7 と言うエラーが出ました。 エラーを探しているとphpinfoに表記されているmysqlのバージョンは『Client API version 3.23.57』、実際に導入しているバージョンには『Server version:5.0.41』とあり、正確に反映されていないのではないかと思いました。 検索してみたところ、httpd.confを書き換えれば良いのではないかと思いましたがどこを直せば良いかわかりません。 以前はEclipceで開発していたのですがそれを止め、別の環境で開発しております。 Eclipceの時には特別なものを何か打ち込んだり書き足したりせず使用できていたので、『set password for xxx@xxxxxx=old_password("password");』は一応試した後に可能性から除外しています。 httpdの書き換えでよろしければそちらでの解決法、また別の解決法に心当たりがありましたら教えていただきたいと思います。 よろしくお願い致します。 OSはWindowsXPPro、PHPはVersion5.0.1です。

    • ベストアンサー
    • PHP
  • PHPからMySQLに接続することができません。

    PHPからMySQLに接続することができません。 解決方法をご存じの方は教えていただけないでしょうか。 PHPから、mysql_connect を行った際、以下のエラーが発生してしまいます。 Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) 環境 OS:CentOS 5.3 DB:Mysql 5.0.67(ソースからインストール) Web:Apache PHPのソースの一部を以下に記します。   $db_host = 'localhost';//DB_NAME;   $db_user = 'user';//DB_USER;   $db_pass = 'pass';//DB_PASS;   $db = mysql_connect($db_host,$db_user,$db_pass); 以下の方法も試したのですが、エラーメッセージは変わりませんでした。   $mysql_connect("localhost:/tmp/mysql.sock","mysql","passwd") 端末のコマンドからMySQLへの接続は成功します。 ホスト名、ユーザー名、パスワードも上記と同一のものです。   $ /usr/local/mysql/bin/mysql -h localhost -u user -p   Enter password:pass 以上です。宜しくお願いします。

    • 締切済み
    • PHP
  • PHPからMySQL5にアクセスできない

    phpからMySQL5にアクセスできません。 以下のソースを実行すると、エラーが表示されます。 ■=== phpのソース=========================================== <html> <?php if( !$mysql = mysql_connect("localhost","test_user","test_password") ){ print "接続失敗<br>"; exit(); } ?> </html> ============================================== ■=== エラー ================================= Fatal error: Call to undefined function mysql_connect() in d:\HTTPRoot\temp\test.php on line 3 ============================================== ■環境 ・PHP 5.1.6 ( Windows Binaries(PHP 5.1.6 zip package )をダウンロードし、c:\PHPへ解凍 ) ・AnHTTPd1.42k ・Windows2000Professional sp4 ・MySQL 5.0.19 ■状況 ・PHPとAnHTTPdは動作しています。 以下、<? phpinfo(); ?> の結果で、MySQLの部分です。  Client API library version 5.0.22  Client API header version 5.0.22  MYSQLI_SOCKET /tmp/mysql.sock ・MySQLにはログインでき、DBやテーブルの作成もできます。 コマンドラインから、以下のコマンドでログインできます。 c:\>mysql -utest_user -ptest_password ・このサイトを参考に、php.iniなど設定しています。 http://homepage1.nifty.com/yito/anhttpd/faq/php5.html   php.iniのこの行もコメントアウトを外しています。    extension=php_mysql.dll 以上、宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPでのMySQL接続エラーについて

    PHPを使用してMySQLサーバに接続しようと思うのですが、どうしても "Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in C:\Server\Apache2.2\htdocs\htdocs\connect.php on line 2" と表示されて接続できません。いろいろ試してみたので、情報を列挙いたします。 動作環境 OS:WindowsXP Pro Apache2.2.8 PHP5.2.6 MySQL5.0 1.コマンドプロンプトからはMySQLに正常に入ることが可能です。 2.上記のエラーが出るPHPプログラムは以下の通りです。 "<?php %conn = mysql_connect("localhost", "root", "password"); ?> 3.phpMyAdminを使って接続しようとしても以下のエラーが出ます。 #2003 - サーバが応答しません" 4.セキュリティソフトを終了させて接続しても同様の症状でした。 5.phpinfo()関数は正常に動作し、mysqlやmysqliの情報も表示されます。 以上の内容ですが、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • PHPからのmysql_connect();がエラーで接続できません。

    QbickUと申します。よろしくお願いします。 環境は、 WinNT / Apache1.3.29 / PHP4.3.6 / MySQL 3.23.49 です。 症状としては、phpで次のように記述し実行すると //サーバー名--localhost ユーザー名--root パスワード--123456 $dbHandle = mysql_connect("localhost","root","123456"); if ($dbHandle == False) { print ("can not connect db\n"); exit; } else { print ("OK\n"); exit; } -- 次のようなエラーが返ります。 Warning: mysql_connect(): Access denied for user: 'SYSTEM@localhost' (Using password: NO) in c:\html\mytest1.php on line 4 can not connect db -- 補足事項なのですが ・MySQL権限の初期設定済みです。 ・コマンドプロンプトからは接続、テーブル操作ができます。(ルート権限 user:root pw:123456、また他の一般権限ユーザーにおいても) ・phpinfo();の結果において、MySQLの表示が確認できます。 ・mysqld-nt.exeはひとつしか起動していません。 'SYSTEM@localhost',password: NOとなっているため、ユーザーID、パスワードとも渡っていないような気がします。 同じようなスレッドを見つけたのですが、いずれもそこで解決に至っておらず、往生しています。 アドバイスをいただけたらうれしいです。よろしくお願いします。