• 締切済み
  • 困ってます

MySQLは起動しているが、PHPから接続できない

WEBサービスの動作確認用に自宅PCにテスト環境を構築しました。システムのバージョンは下記の通りです。すべて、同一マシンのCドライブのデフォルトのフォルダにインストールされています。 OS:WindowsXP sp3 Apache2.2 PHP5.2 MySQL5.5 先ず、phpinfo()で確認したところ、図の通りmysql,mysqli関係のエクステンションは読み込まれています。 次に、MySQL自体はサービス一覧でも起動しているし、コマンドプロンプトからも起動できます。 ポートはmy.iniで3306に設定していますが、XPのファイヤーウォールは例外設定しているし、ファイヤーウォール機能のあるアンチウイルスソフトはインストールしていません。 MySQLフォルダの中にあるmy-small.ini~my_huge.inを確認したところ、"#skip-networking"とコメントアウトされています。 試しに、"telnet localhost 3306"をやると、謎の文字列が出てきて、しばらく後に「接続が切断されました」となります。これって繋がってるって事ですよね? PHPスクリプトは下記の通りです。 <?php $link=mysql_connect('localhost','root','root')or die("MySQLと接続できません"); ?> ところが結果は、下記の通りのエラーが出て繋がりません。 Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\myconnect_test.php on line 2 MySQLと接続できません 英語のドキュメントを含めて、ネット上をかなり捜しましたが、他に原因となるような事は見つかりませんでした。 これまで過去のバージョンを含め、MySQLやPHPを何度かインストール/アンインストールを繰り返したので、昔の設定ファイルが残っているのか?とも思いましたが、WINDOWSフォルダにそれらしいものは見つかりませんでした。 もうお手上げ状態ですが、何か見落としていますでしょうか?

共感・応援の気持ちを伝えよう!

  • MySQL
  • 回答数8
  • 閲覧数8341
  • ありがとう数2

みんなの回答

  • 回答No.8

うーん、後は、xamppとか入ってて、別のPHPや別のMySQLが入ってる可能性くらいしか思いつかないなぁ

共感・感謝の気持ちを伝えよう!

質問者からの補足

xamppは入れたことはありませんが、過去にインストールした別のPHPやMySQLが残ってる可能性はありますね。 しかし、Program FilesやWindowsフォルダをざっと見てみたんですが、それらしいファイルは発見できず。特にMySQLは昔と今とでファイル構成が変わってるので、昔何処に何があったか良くわかりません。

  • 回答No.7

>root(root)でmysqlに入って、 >「GRANT ALL PRIVILEGES ON *.* TO phpuser IDENTIFIED BY 'php' 」 >などと新規ユーザーを登録しました。 「新規ユーザーを登録」は間違いで、phpuserに権限を与えているコマンドで、パスワード設定ではないです。 「Passwordを聞かれたときに何も入れなければ入れます」との事なので、phpuserは「空のパスワード」ですね ^ ^; >念のため「select user, password from mysql.user」で確認すると、ちゃんとphpuserが登録されています。 >パスワードは暗号化されていますが、"php"の事でしょう。 ---- >ところが、一旦exitした後「mysql -u phpuser -p」で入り直そうとすると、 >「Access denied for user for 'phpuser'@'localhost'....」 >と拒絶されてしまいます。 >もしPasswordを聞かれたときに何も入れなければ入れます。 「mysql -u phpuser -p」で「php」というパスワードを入れた時に上記のエラーなら・・・単純にパスワードが間違って発生したエラーなので、正しい「空のパスワード」で正常にコネクトすると思います。 上記ことを踏まえると 「mysql_connect('localhost','root','root')」を 「mysql_connect('localhost','phpuser','')」と書き換えるとPHPもエラーなくコネクトできるように思います。

共感・感謝の気持ちを伝えよう!

質問者からの補足

>「新規ユーザーを登録」は間違いで、phpuserに権限を与えているコマンドで、パスワード設定ではないです。 これって、権限を与えつつ新規ユーザーを登録する、というコマンドではないのですか? 実際にphpuserという新規ユーザーは出来てるし、mysql.userテーブルを見ると、暗号化されたパスワードも設定されています。 何れにせよ「mysql_connect('localhost','phpuser','')」でもダメでした。ためしにパスワードの所に'php'を入れてもダメです(同じエラーです)。 そもそも、もしユーザー名やパスワードの誤りなら、エラーメッセージは「Access denied user 'phpuser'...」とかになるのではないでしょうか?

  • 回答No.6

phpinfoの結果、mysqli.default_portは3306になっていますが、 mysql.default_portはNo Valueになってません? $link=mysql_connect('localhost:3306','root','root') にするか $link=mysqli_connect('localhost','root','root') にしたらどうなりますか? あるいは、php.iniのmysql.default_portを設定するか、 システム環境変数で、MYSQL_TCP_PORTを設定するか、 /etc/servicesのmysql-tcpエントリを設定・・・ってWindows版はservices見てくれるのか不明だけど。

共感・感謝の気持ちを伝えよう!

質問者からの補足

>mysql.default_portはNo Valueになってません? なってます(見えにくくてすみません)。 「mysql.default_port=3306」でやってみたこともあるんですが、だめでしたね。 「mysqli_connect()」もやはり駄目です。同じ結果です。 >システム環境変数で、MYSQL_TCP_PORTを設定… MYSQL_TCP_PORTという変数を新たに設定して、値を3306にするって事ですよね?…やってみましたが駄目でした。 >/etc/servicesのmysql-tcpエントリを設定・・・ すみません。意味が良くわからなかったのでやってません(^^; 因みにservicesの一覧にはMySQLはちゃんと出てきて「開始」してますよ。

  • 回答No.5

>$ mysql -u user -p >Enter Password: (パスワード) >mysql> >mysql> exit; <- mysqlの終了 >これは正しく作動します。 上記のコマンドでインストールしたMySQLが、ユーザ「user」で動作確認ができたことを確認しという意味あります。 192.168.1.1のホストへIPアドレス指定で接続を行ってIP関係のセキュリティを確認 $ mysql -u user -p -h 192.168.1.1 参照 http://www.atmarkit.co.jp/flinux/rensai/mysql03/mysql03.html > <?php > $link=mysql_connect('localhost','root','root')or die("MySQLと接続できません"); > ?> localhostで接続しているので、「>$ mysql -u user -p」が成功するなら「'root','root'」が間違っているという結論なんですが・・・rootというユーザが問題かもしれません。 特権ユーザrootなので、アプリケーション側でブロックしている可能性もあるので phpuser など、一般ユーザを作成して「>$ mysql -u phpuser -p」などで確認しては如何ですか?

共感・感謝の気持ちを伝えよう!

質問者からの補足

>「>$ mysql -u user -p」が成功するなら「'root','root'」が間違っているという結論なんですが・・・ すみません。"user"のところは書き換えるのが前提だと思ったので、"root"にしてやりました。 もし"user"をそのままつかって入力し、Passwordを聞かれたらそのままブランクでEnterすると何故かmysqlには入れますね。 >phpuser など、一般ユーザを作成して「>$ mysql -u phpuser -p」などで確認しては如何ですか? root(root)でmysqlに入って、 「GRANT ALL PRIVILEGES ON *.* TO phpuser IDENTIFIED BY 'php' 」 などと新規ユーザーを登録しました。 念のため「select user, password from mysql.user」で確認すると、ちゃんとphpuserが登録されています。パスワードは暗号化されていますが、"php"の事でしょう。 ところが、一旦exitした後「mysql -u phpuser -p」で入り直そうとすると、 「Access denied for user for 'phpuser'@'localhost'....」 と拒絶されてしまいます。もしPasswordを聞かれたときに何も入れなければ入れます。 あまりコマンドラインでDBを操作したことは無いのですが、どういうことだかさっぱりです(^^;

  • 回答No.4

>「コマンド・レベルで接続」とはどういう意味でしょうか? UNIXの例ですが・・・ 下記のようなコマンドでMySQLをインストールしたサーバで操作します。 ユーザとして「user」が作成されてパスワードとして「(パスワード)」が設定されている場合、 >$ mysql -u user -p >Enter Password: (パスワード) >mysql> >mysql> exit; <- mysqlの終了 >$ 上記のコマンドで、MySQLが正しくインストールされていて、ユーザ「user」とパスワード「(パスワード)」が正しく登録されていることを確認します。 MySQLがインストールされているサーバで実行すると内部ループで実行するのでセキュリティでブロックされることは少ないです。 次に、同じネットワークにある別なサーバからIPアドレスで同じコマンドを実行して、適切なネットワーク上のセキュリティが設定されることを確認します。 最後にPHPなどのアプリケーション経由でMySQLが接続できることを確認

共感・感謝の気持ちを伝えよう!

質問者からの補足

>$ mysql -u user -p >Enter Password: (パスワード) >mysql> >mysql> exit; <- mysqlの終了 これは正しく作動します。 >同じネットワークにある別なサーバから… については、自宅にあるのはこのマシンだけなので、残念ながら試せません。

  • 回答No.3

php.exeにパスが通っている状態で、以下の内容を「test.php」と名前をつけて「php test.php」を実行するとメッセージは変わりますか? <?php if( $cn=mysql_connect( "localhost", "root", "root" ) ){ echo "coonect success!"; }else{ echo "cannot connect!"; } ?>

共感・感謝の気持ちを伝えよう!

質問者からの補足

>php.exeにパスが通っている状態で というのは、システム>詳細設定>環境変数>システム環境変数>Pathの事でしょうか? ではれば"C:\php"を追加しています(ここにphp.exe他、PHP一式入ってます)。 上記のスクリプトですが、そのまま作って試しましたが、メッセージは同じでした。 mysql_connect()が機能しないのだから、結果は同じだと思いますが。

  • 回答No.2

> ポートはmy.iniで3306に設定していますが、 中略 > Can't connect to MySQL server on 'localhost' (10061) とあるように、ポート10061に接続しようとしていますよね。

共感・感謝の気持ちを伝えよう!

質問者からの補足

10061というのはポートの事ではなく、「Mysql未起動、ホストに到達できない」という意味のエラーコードのようです。 http://q.hatena.ne.jp/1162342259(一番下の回答)

  • 回答No.1

MySQLにコマンド・レベルで接続したら・・・どうなりますか? >もうお手上げ状態ですが、何か見落としていますでしょうか? PHPからの接続を確認する前に「MySQLにコマンド・レベル」での接続を確認し、その後 PHPで確認するという手順で確認ですね

共感・感謝の気持ちを伝えよう!

質問者からの補足

すみません「コマンド・レベルで接続」とはどういう意味でしょうか? コマンドプロンプトで"mysql"と入れたら接続できますが、それとは違うのでしょうか?

関連するQ&A

  • PHPにてMySQLとの接続をオープンできない。

    環境 OS:winXP SP2 HE(localhost) Apache 2.0.52 MySQL 5.0.2 PHP 5.0.3 Apache,MySQL起動しています。 自動起動なのでMySQLのタスクトレイの表示はありませんがMySQLCommandLineClientでログインできますし、SQL文も通ります。 データベースは用意してあります。 必要な設定は済んでいると考えています。 [httpd.conf,my.ini] PHPコードだけのスクリプトは動きます。 ファイルはApache2\htdocs\に入れて、ブラウザで呼び出しています。 要点 PHPスクリプトからMySQLとの接続をオープンできないようです。 何が悪いのかご意見ご教授頂ければ幸いです。 サンプル 以下のように単純に接続するphpファイルを作成しましたがブラウザは真っ白になったままです。 <?php $dbserver = "localhost"; $dbuser="root"; $dbpassword="パスワード"; $con = mysql_connect($dbserver,$dbuser,$dbpassword); if($con){print"OK!"; }else{print"NO!";} ?>

  • 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に接続失敗

    Apache_2.0.55 php-5.1.2-win32 mysql-5.0.21-win32 windows XP HOME Call to undefined function mysql_connect() in C:\Program Files\Apache Group\Apache2\htdocs\sample\smp01.php on line 9 とエラーがでました。 以下の設定しているのですが、このようなエラーがでました PHPとApacheのテストは成功しています mysqlコマンドラインツールの起動・操作もできました mysqlのパスワードは設定はしていません PHPのスクリプトは実行できるのですが PHPとMySQLの接続がうまくいきません 色々と、調べているのですが原因がわかりません 初心者です、どうぞ宜しくお願いします 1 <?php 2 3 $DBSERVER = "localhost"; //MySQLサーバー名 4 $DBUSER = "root"; //ログインユーザー名 5 $DBPASSWORD = ""; //パスワード 6 $DBNAME = "sampledb"; //データベース名 7  8 //MySQLに接続します 9 $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); libmysql.dllをC:\WINDOWS\system32にコピー PHP.iniファイルでextension=php_mysql.dllをコメントから復帰 Apacheを再起動

    • ベストアンサー
    • 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に接続できません。

    PHP初心者でWindows XPを使っています。 「実戦マスター PHP+MySQL」という本で勉強しているのですがどうしてもわからないところがあるので教えてください。 MySQLモニタからデータベースの操作まではうまくいったのですが、phpからMySQLを操作する段になってmysql_connect('localhost', 'root', 'xxxx');とするとエラーになるのです。エラー画面は Fatal error: Call to undefined function mysql_connect() in C:\Program Files\Apache Group\Apache2\htdocs\test\test7-1-1.php on line 6 です。何故こんなエラーが出るかわかりません…。どなたか助けて頂けませんでしょうか。

  • phpからMySQLに接続について

    phpからMySQLに接続について 自宅サーバーにMySQLをインストールしたのですが、 phpからMySQLに接続がうまくできず、困っています。 [test.php] <?php mysqli_connect("localhost","root","qwertyui") or die("Error MySQL First Test"); echo "Success MySQL First Test"; ?> [エラーログ] PHP Fatal error: Call to undefined function: mysqli_connect() in ~~~test.php on line 2 コマンドラインでは正常に動作しているのでインストールは問題ないと思います。 PHPの設定だと思うのですが、考えられる原因を教えていただければ幸いです。 環境 VineLinux 4.2 PHP 4.4.8 MySQL 5.0.27 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • mysqlに接続できない?

    XAMPP v3.2.2を使用しています。 Apache 2.4.18 mysqlnd 5.0.12 PHP 7.0.8 phpからmysqlに接続したいのですが $conn = mysql_connect( "localhost", "root", "" ); 上記のコードで Fatal error: Uncaught Error: Call to undefined function mysql_connect() のエラーが表示されます。 Call to undefined function mysql_connect() を検索するといくつか出てきますがどれも解決には至りませんでした。 気になるのは「libmysql.dll」が存在していないことです。 サイトを見ると標準でインストールされるような事が書かれていますがインストールされない場合もあるのでしょうか? それともこのバージョンでは不要なのでしょうか?

    • ベストアンサー
    • MySQL
  • 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を再起動したのですが同じエラーでした。 他に設定しなければならない事があるのでしょうか?

  • 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
  • PHPからmySQLへの接続

    PHPからmySQLへ接続しようとしているのですがうまくいきません。 使用しているのはWindowsXP / apache_2.2.11 / php-5.2.8 / mysql-5.1.30 です。 添付データ(サンプルを引っ張ってきて書き換えたものなのでタイトルなどはいい加減です。また、パスワードは伏せてあります)のようなものをつくり実行すると以下のようなエラーが出ます。 Fatal error: Call to undefined function mysql_connect() おそらく「mysql_connect()が定義されていない」というエラーだと思われます。 調べてみると「extension=php_mysql.dllをコメントから復帰させる」というのがベストのようですが、使用しているphp.iniから該当する文が見つけられません。 どのようにすれば接続できるようになるでしょうか?

    • ベストアンサー
    • MySQL