Não há solução pronta para uso. Mas você pode fazer o seguinte:
- Obtenha as
data_length
eindex_length
para as tabelas que o usuário possui comshow table status
(essa é a quantidade de espaço que os arquivos de dados usam no sistema de arquivos) - Resuma esses números para todos os bancos de dados
- Se o limite for atingido, remova, por exemplo, os privilégios INSERT desse usuário, para que ele não possa mais inserir novos dados.
Mas tenha em mente que a remoção de dados de tabelas InnoDB não liberará espaço no sistema de arquivos. Então, se o usuário atingiu o limite, ele não pode fazer nada contra isso. (Exceto jogar todas as tabelas InnoDB, largá-las e reimportá-las)