Может кто-нибудь мне поможет с привилегиями здесь. Мне нужно создать пользователя, который может удалять таблицы в базах данных, но не может удалять базы данных?
Насколько я понимаю из Документы MySQL вы не можете просто сделать это:
Право DROP позволяет вам отбрасывать (удалять) существующие базы данных, таблицы и представления. Начиная с MySQL 5.1.10, привилегия DROP также требуется для использования оператора ALTER TABLE ... DROP PARTITION в многораздельной таблице. Начиная с MySQL 5.1.16, для TRUNCATE TABLE требуется привилегия DROP (до этого TRUNCATE TABLE требует привилегии DELETE).
Любые идеи?
Да, и используемая база данных - 5.0.45.
У меня такая же проблема :( Я думаю, что если пользователь может удалить все таблицы, тогда пустая база данных не имеет значения
Ну, вот уже 6 лет есть ошибка, но ничего не произошло.
http://bugs.mysql.com/bug.php?id=18938
Возможно, нам придется прибегнуть к добавлению функциональности к чему-то вроде MariaDB (вилка mysql) ...
Если пользователь может УДАЛИТЬ таблицу, он сможет УДАЛИТЬ все таблицы, что фактически удалит базу данных. Так что нет смысла в отдельных привилегиях для DROP TABLE и DROP DATABASE.
Если вы хотите предоставить пользователю привилегию DROP только одной указанной таблицы в базе данных, это может быть полезно, но MySQL не поддерживает это.
Я просто добавляю это, поскольку другие ответы для меня больше похожи на комментарии ... Короткий ответ - нет. Некоторые альтернативы:
Рассмотрите возможность помещения таблиц в другую базу данных, если вам действительно нужно, чтобы некоторые пользователи имели полный контроль над одними таблицами, а не над другими. Более привилегированные пользователи могут выполнять запросы к нескольким базам данных.
Разрешите DELETE и ALTER, чтобы вы могли хотя бы удалить и / или переопределить данные по мере необходимости. Все, что вам нужно, кроме капли.
Ни то, ни другое не особенно удобно, но если вам так важно, вы можете это сделать.