Назад | Перейти на главную страницу

Ограничение места для пользователя MySQL

Я поддерживаю сервер MySQL. Есть один пользователь, размер базы данных которого очень быстро вырос. Поскольку он использует InnoDB, файл / data / mysql / ibdata1 вырос из частей. Я мог бы смонтировать небольшой раздел и поместить туда его базу данных, но файл ibdata1, похоже, используется для всех баз данных.

Что меня беспокоит, так это то, как ограничить конкретному пользователю использование большего пространства базы данных, чем определено для него.

Нет готового решения. Но вы можете сделать следующее:

  1. Получить data_length и index_length для таблиц, которыми владеет пользователь show table status (Это объем пространства, которое файлы данных используют в файловой системе)
  2. Суммируйте эти числа для всех баз данных
  3. Если предел достигнут, удалите, например, привилегии INSERT для этого пользователя, чтобы он больше не мог вставлять новые данные.

Но имейте в виду, что удаление данных из таблиц InnoDB не освобождает место в файловой системе. Так что если ваш пользователь достиг лимита, он ничего не может с этим поделать. (За исключением сброса всех таблиц InnoDB, их удаления и повторного импорта)