Ограничение пространства для пользователя MySQL
Я поддерживаю сервер MySQL. Есть один пользователь, чей размер базы данных очень быстро увеличился. Поскольку он использует InnoDB, файл /data/mysql/ibdata1 вырос из вложений. Я мог бы смонтировать небольшой раздел и поместить туда свою базу данных, но файл ibdata1, похоже, используется всеми базами данных.
Меня беспокоит то, как ограничить конкретного пользователя в использовании большего объема базы данных, чем определено для него.
1 ответ
Решение
Нет готового решения. Но вы можете сделать следующее:
- Получить
data_length
а такжеindex_length
для таблиц, которыми владеет пользовательshow table status
(Это количество места, которое файлы данных используют в файловой системе) - Суммируйте эти числа для всех баз данных
- Если предел достигнут, удалите, например, привилегии INSERT для этого пользователя, чтобы он больше не мог вставлять новые данные.
Но имейте в виду, что удаление данных из таблиц InnoDB не освободит место в файловой системе. Так что, если ваш пользователь достиг предела, он не сможет ничего с этим поделать. (За исключением сброса всех таблиц InnoDB, удаления их и повторного импорта)