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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ERROR 1045 (28000) (using pas...
-
パスワード入力を省略したい
-
MySQLは起動しているが、PHPか...
-
rootのパスワード
-
phpMyAdmin にログインできません
-
接続ができません
-
ODP.NETのバージョン確認
-
MySQLカラム名は日本語と英数字...
-
副問合せにLIKE文を使う方法は...
-
mysqlへのインポート処理がうま...
-
postgreSQLのデータ型
-
mysqlがインストールされている...
-
エクセルで連勤チェックをした...
-
MySQLの型のサイズ指定で速度は...
-
like句を使って日本語を検索す...
-
RPMのmysqlとmysql-serverの違い
-
プライマリーキーの昇順でソー...
-
SQL開発環境ソフトウェアである...
-
VBAで変数内に保持された二次配...
-
SQLで日本語データを入力したい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ERROR 1045 (28000) (using pas...
-
パスワード入力を省略したい
-
my.iniで設定するパスワードの...
-
ERROR 1045 (28000)について
-
phpMyAdminのrootユーザー
-
パスワードが設定できない。。
-
mysqlへのリダイレクトができな...
-
コマンドのスペルには自信はな...
-
MySQL パスワードが認証されて...
-
xamppの設定の問題でしょうか。...
-
MySQLは起動しているが、PHPか...
-
rootのパスワード
-
mysql -h localhost -u roo
-
MySQLのrootのパスワードを忘れ...
-
ユーザ追加して、パスワード無...
-
phpMyAdminが誰でもアクセスで...
-
rootのパスワードが通らない
-
接続ができません
-
ODP.NETのバージョン確認
-
副問合せにLIKE文を使う方法は...
おすすめ情報