私は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のいずれかの種類を感謝してますが、普通の$結果です!
[SHOW DATABASES構文](https://dev.mysql.com/doc/en/show-databases.html)に記載されているように、「*特権を持っているデータベースのみが表示されます* 。 – eggyal