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フォルダにそれらしいものは見つかりませんでした。
もうお手上げ状態ですが、何か見落としていますでしょうか?
A 回答 (8件)
- 最新から表示
- 回答順に表示
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/ …
> <?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(一番下の回答)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL XamppでインストールしたMySQLのフォルダのWinRARでのバックアップについて 1 2022/06/22 18:55
- PHP PHP & MySQL: Server-side Web Development ペーパ 1 2022/04/19 19:23
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ERROR 1045 (28000) (using pas...
-
MySqlのパスワードに「"」が含...
-
mysqlをシェルスクリプト(BASH...
-
my.iniで設定するパスワードの...
-
MySQLは起動しているが、PHPか...
-
接続ができません
-
MySQLカラム名は日本語と英数字...
-
mysqlがインストールされている...
-
like句を使って日本語を検索す...
-
INT型は金額の型に使用するべき...
-
急に文字化けを起こすようにな...
-
Visual Studio C++ と Pro*C/C+...
-
VBAで変数内に保持された二次配...
-
ODP.NETのバージョン確認
-
経過時間(hhmmdd)をDATE型には...
-
大きなmysqlファイルのエクスポ...
-
Mysqlへの接続に関して
-
複数行のクエリを、まとめて実...
-
ERROR 1054 (42S22) 原因不明です
-
mysqlへのインポート処理がうま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ERROR 1045 (28000) (using pas...
-
パスワード入力を省略したい
-
my.iniで設定するパスワードの...
-
root@localhostを消してしまった
-
MySQLへroot以外でログイン
-
ERROR 1045 (28000)について
-
PHPからのmysql_connect();がエ...
-
MySQLは起動しているが、PHPか...
-
MySQLをはじめて実行してみると
-
MySqlで、DBのファイルサイ...
-
現在MySQLの特権ユーザー(root...
-
接続ができません
-
副問合せにLIKE文を使う方法は...
-
VBAで変数内に保持された二次配...
-
MySQLカラム名は日本語と英数字...
-
mysqlがインストールされている...
-
ODP.NETのバージョン確認
-
INT型は金額の型に使用するべき...
-
postgreSQLのデータ型
-
like句を使って日本語を検索す...
おすすめ情報