O MySQL permite o uso de curingas para nomes de bancos de dados, a fim de permitir que um usuário opere apenas em um subconjunto de bancos de dados:
GRANT ALL PRIVILEGES ON `foobar%`.* TO 'user'@'%' IDENTIFIED BY 'somepassword';
Existe uma maneira de fazer o mesmo para a concessão CREATE, para permitir (cf. o exemplo acima) criaruser
apenas bancos de dados cujo nome começa com ?foobar
Dito de outra forma: a concessão CREATE é global (ou seja, um usuário com esse privilégio pode criar qualquer banco de dados, sem limitações) ou pode ser limitado de alguma forma?
Sim. Basta adicionar o privilégio CREATE:
E é só testar:
Esteja ciente de que você precisa escapar do
_
(sublinhado), pois ele age comoone character
no padrão. Portanto, «`foobar_`» corresponderá afoobar1
oufoobarZ
.