2016-04-16 2 views
0

Я столкнулся с какой-то странной проблемой при работе с MySQL с PHP и объектом mysqli. У меня есть пользователь, который я использую для подключения к MySQL, и у этого пользователя достаточно разрешений для работы с конкретной базой данных. Все работает нормально.Как обрабатывать недостаточно разрешений в php mysqli?

Но я пытаюсь получить список всех баз данных. У пользователя нет прав для этого. Очевидно, я не вижу результатов моего запроса. Но странно то, что у меня также нет ничего в mysqli-> errno, $ mysqli-> ошибке (без разрешения отказа или какой-либо ошибки!), А мой результат $ FALSE. Поэтому в этой ситуации все выглядит так, как будто запрос выполнен нормально, и на сервере нет баз данных (конечно, это не так).

Вопрос не в том, как предоставить права пользователя на выполнение SHOW DATABASES .. Вопрос в том, почему я не вижу никаких ошибок, в то время как у пользователя нет разрешений для выполнения конкретного запроса? И далее, как правильно справиться с такой ситуацией?

Я использую этот код и он не справиться с ситуацией, так как $ результатов не ЛОЖЬ - это просто нормальным $ результат, но с пустыми строками

$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

Bingo! Спасибо, eggyal!

Мой пользователь видит только базы данных, к которым у него есть доступ. Я подумал, что он получит ошибку, если у него нет прав на список баз данных на сервере. Теперь все ясно!

Смежные вопросы