こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLでのデータベースの選択ができません。

初めまして。

PHPを用いてMySQLを操作しようとしています。
接続はうまくいくのですが、データベースを選択する際に失敗します。
XAMPPを使用しています。

色々と調べてみましたが
全くの初心者のため、的を得た情報にたどり着けず、
皆様のお力をお借しいただきたいと思います。

PHPは以下のようにしました。

<?php
$hostname = "localhost";
$user = "root";
$password = "";
$dbname = "weather";

$conn = mysqli_connect("$hostname","$user","$password");

if (!$conn) {
die("接続失敗" . mysqli_connect_error());
}
print "接続成功" . mysqli_get_host_info($conn) . "\n";

$selectdb = mysql_select_db("$dbname");

if (!$selectdb) {
die("選択失敗:".mysql_error());
}
print("$dbname"."に接続成功");

$close = mysqli_close($conn);
if ($close) {
print("切断成功");
}
?>


これを実行すると

接続成功localhost via TCP/IP 選択失敗:Access denied for user ''@'localhost' to database 'weather'

という表示になります。



権限は以下のようになっています。

ユーザ ホスト 種別 特権 権限委譲 操作
root 127.0.0.1 グローバル ALL PRIVILEGES はい
root localhost グローバル ALL PRIVILEGES はい

特権には全てチェックがついているので
ユーザ権限の部分は問題ないと思うのです。


素人なりに考えてみたら

『Access denied for user ''@'localhost' to database 'weather'』

の@の前が空欄になっているのが原因なのかなと思いましたが
どうすればいいのかわかりませんし、
その原因にも自信がありません。

初めて質問するので
失礼な部分などがあればお許し下さい。

どうかよろしくお願いいたします。

投稿日時 - 2012-05-12 12:47:38

QNo.7471448

困ってます

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

試したところではデータベース名が間違っている場合に同様のエラーメッセージが出ました。
mysqlコマンドで
mysql -u root
で入り、
show databases
で実際のデータベース名を確認されるのがいいと思います。

投稿日時 - 2012-05-12 14:53:25

補足

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

show databaseでデータベース名を確認したところ
weatherというデータベースが表示されたので
間違いなく存在していると思います。


コマンドプロンプトで
c:\xampp\mysql\bin\mysql -u root
と入力すべきところを
c:\xampp\mysql\bin\mysql 
とだけ入力して実行してしまった際に
show database
を行うと

Database
information_schema
test
という2つのデータベースが出てきました。

testというのはxamppのmysqlに最初から登録されていたものです。

そこで、PHPスクリプトの$dbnameを
$dbname = 'test';
としたところ、選択できました。

ちなみに、このtestというデータベースは
PHPスクリプトの
$user ='';
の部分を何にしても選択できます。

そこで、もしかしたらrootというユーザーでアクセスできていないのではないかな、と思いました。

特に知識がない僕の推測を載せるのはおこがましいとは思いますが、補足させていただきます。

再度よろしくお願いいたします。

投稿日時 - 2012-05-14 11:19:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問