Eu tenho o mesmo problema :( Eu acho que se o usuário pode soltar todas as tabelas, então o banco de dados vazio não tem valor
Alguém pode me ajudar com privilégios aqui. Preciso criar um usuário que possa DROP tabelas dentro de bancos de dados, mas não pode DROP os bancos de dados?
Pelo que entendi de documentos do MySQL você não pode simplesmente fazer isso:
The DROP privilege enables you to drop (remove) existing databases, tables, and views. Beginning with MySQL 5.1.10, the DROP privilege is also required in order to use the statement ALTER TABLE ... DROP PARTITION on a partitioned table. Beginning with MySQL 5.1.16, the DROP privilege is required for TRUNCATE TABLE (before that, TRUNCATE TABLE requires the DELETE privilege).
Alguma idéia?
Ah, e o dabase em uso é 5.0.45.
Se um usuário puder DROP uma tabela, ele poderá DROP todas as tabelas, o que efetivamente exclui o banco de dados. Portanto, não há nenhum ponto em privilégios separados para DROP TABLE e DROP DATABASE.
Se você quer conceder um privilégio a um usuário para DROP apenas uma única tabela especificada dentro do banco de dados, isso é algo que pode ser útil, mas o MySQL não suporta isso.
Bem, há um bug há 6 anos e nada aconteceu.
Podemos ter que recorrer a adicionar a funcionalidade a algo como MariaDB (um fork do mysql) ...
Estou apenas adicionando isso, pois as outras respostas parecem mais comentários para mim ... A resposta curta é não. Algumas alternativas são:
Considere colocar tabelas em outro banco de dados se você realmente precisar que alguns usuários tenham controle total sobre algumas tabelas e não sobre outras. Mais usuários privilegiados podem consultar vários bancos de dados.
Permitir DELETE e ALTER para que você possa pelo menos remover e / ou redefinir os dados, conforme necessário. Tudo que você precisa, exceto soltar.
Nenhum deles é particularmente conveniente, mas se sua necessidade é tão importante, você pode fazer isso.