Проверьте права пользователя, прежде чем пытаться создать базу данных - PullRequest
2 голосов
/ 04 марта 2009

Некоторые хостеры позволяют вашему скрипту СОЗДАТЬ БАЗУ ДАННЫХ, некоторые нет, и требуют, чтобы вы вместо этого использовали их панели управления. Как проверить, позволит ли база данных выполнить этот запрос с указанным пользователем / паролем, фактически не создавая базы данных?

Поскольку, если у меня недостаточно прав, я просто хочу полностью скрыть кнопку «Создать базу данных» в пользовательском интерфейсе.

Я использую PHP и MySQL. Спасибо.

Ответы [ 3 ]

5 голосов
/ 04 марта 2009

Вы можете получить права с помощью:

SHOW GRANTS FOR CURRENT_USER;
3 голосов
/ 04 марта 2009

Как сказал Вартек, SHOW GRANTS FOR CURRENT_USER - это путь. Я просто добавляю этот ответ, чтобы показать вывод этого оператора, когда у вас нет полных прав:

GRANT USAGE ON *.* TO 'myusername'@'%' IDENTIFIED BY PASSWORD '*8D4A4D198E31D6EA9D7997F7B29A2BCA254178B6'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE ROUTINE ON `mydb1`.* TO 'myusername'@'%'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE ROUTINE ON `mydb2`.* TO 'myusername'@'%'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE ROUTINE ON `mydb3`.* TO 'myusername'@'%'
1 голос
/ 04 марта 2009

Просто создайте тестовый скрипт

<?php
mysql_connect(...);
$result = mysql_query('CREATE DATABASE testDB');
if (!$result)
{
    //Failed
}
else
{
    mysql_query('DROP DATABASE testDB');
}
mysql_close();
?>

Вы можете определить переменную в IF, а затем записать ее в файл конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...