2016-04-16 21 views
0

私はPHPとmysqliオブジェクトでMySQLを扱う際に奇妙な問題が発生しました。私はMySQLに接続するために使用するユーザーがあり、そのユーザーは特定のデータベースで作業するのに十分な権限を持っています。すべて正常に動作します。PHP mysqliで十分な権限を扱う方法は?

しかし、私はすべてのデータベースのリストを取得しようとしています。ユーザーにはそのアクセス許可がありません。明らかに私はクエリの結果を見ることができません。しかし、奇妙なことは、$ mysqli-> errno、$ mysqli-> error(パーミッションが拒否されていないか、何らかのエラーが発生していません!)に何もないことです。my $ resultはFALSEではありません。したがって、この状況では、クエリが正常に実行され、サーバー上にデータベースが存在しないように見えます(もちろん、これは当てはまりません)。

問題は、SHOW DATABASESを実行する権限をユーザーに与える方法ではありません。問題は次のとおりです。ユーザーが特定のクエリを実行する権限がないのに、エラーが表示されないのはなぜですか?さらに、そのような状況を適切に処理する方法は?

私はこのコードを使用して$結果がFALSEではありませんので、それは、状況を処理しない - それは空の行

$result = $mysqli->query("SHOW DATABASES"); 
if($result === FALSE){ 
    echo 'We've got MySQL error! '.$mysqli->errno.':'.$mysqli->error); 
} 

suggectionsのいずれかの種類を感謝してますが、普通の$結果です!

+0

[SHOW DATABASES構文](https://dev.mysql.com/doc/en/show-databases.html)に記載されているように、「*特権を持っているデータベースのみが表示されます* 。 – eggyal

答えて

0

ビンゴ!ありがとうエジガール!

自分のユーザーは、自分がアクセス権を持つデータベースのみを認識します。私は、彼がサーバ上のデータベースをリストする権限を持っていなければ、彼はエラーになると思っていました。今はすべてがクリアです!

関連する問題