Удаление баз данных MySQL по префиксу: решение в PHP
Быстрый ответ
Если вам необходимо массово удалить базы данных MySQL, соответствующие определённой маске, можно составить список подходящих имен и использовать их в команде DROP DATABASE
. Данная операция может быть выполнена одной командой:
mysql -u имя_пользователя -p -e "SHOW DATABASES LIKE 'шаблон%';" | grep 'шаблон' | xargs -I "{}" mysql -u имя_пользователя -p -e "DROP DATABASE \`{}\`;"
Подставьте в места имя_пользователя
и шаблон%
данные согласно вашим потребностям. Помните, что данная операция необратима, поэтому используйте её с большой осторожностью.
Понимаем команду: Вы уверены?
Прежде чем приступить к выполнению такой операции, убедитесь, что вам действительно необходимо удалить эти базы данных. Всякое действие, приводящее к потере данных, требует предварительного создания резервной копии и тестирования в изолированной среде.
Автоматическое удаление: Румба разработчика
В тех случаях, когда задача усложняется, можно обратиться к скриптам для автоматизации процесса удаления. Ниже представлен пример PHP-скрипта с этой функцией:
<?php
$mysqli = new mysqli("ваш_хост", "ваш_пользователь", "ваш_пароль", "");
$result = $mysqli->query("SHOW DATABASES LIKE 'шаблон_%'");
while ($row = $result->fetch_array()) {
$database = $row[0];
// На каждое мощное действие должна идти мощная проверка – дядя Бен бы одобрил
if (preg_match('/^шаблон_[\w]+$/', $database)) {
$mysqli->query("DROP DATABASE `". $mysqli->real_escape_string($database) ."`");
}
}
?>
Скрипт выбирает базы данных, соответствующие заданному шаблону, и после проверки удаляет их. Помните об обязательной резервной копии и сначала проведите тестирование скрипта.
Контроль ущерба: Меры предосторожности
Перед тем как применять скрипт в продуктивной среде, необходимо внести механизмы безопасности:
- Получение подтверждения перед удалением.
- Логирование действий для обеспечения контроля.
- Выбор времени с наименьшей нагрузкой для выполнения операции с целью минимизации рисков.
Визуализация
Представьте себе книжный шкаф, полный книг. Вы хотите убрать книги авторов, имена которых начинаются на "Дж. К.*". В SQL это происходит следующим образом:
Шкаф до:
📚📚📓📗[Дж.К.*]📘📙📚📚
Выполнение SQL-команды:
**DROP DATABASES LIKE 'Дж.К.%';**
Шкаф после:
📚📚📓📗📘📙📚📚
Как по волшебству, SQL-запрос умело находит и удаляет нужные базы данных.
Другие безопасные альтернативы: Когда вы не любитель командной строки
Если вам сложно работать с командами, можно использовать графические интерфейсы, например, MySQL Workbench.
С помощью MySQL Workbench
В MySQL Workbench можно выполнить:
SHOW DATABASES LIKE 'префикс%';
В результате вы получите список, где сможете вручную выполнить DROP, контролируя процесс удаления.
С помощью Python или Jython
Такие языки программирования как Python или Jython, предоставят больше гибкости, дополнительный контроль и возможность внедрения проверок безопасности.
Обращайте внимание на специальные символы
Если в названиях ваших баз данных присутствуют специальные символы, обязательно экранируйте их. Некоторые символы, например подчёркивание (_), в SQL используются как шаблоны.
mysql -u имя_пользователя -p -e "SHOW DATABASES LIKE 'шаблон\_%';" | grep 'шаблон' | xargs -I "{}" mysql -u имя_пользователя -p -e "DROP DATABASE \`{}\`;"
Полезные материалы
- MySQL :: MySQL 8.0 Reference Manual :: 13.1.22 DROP DATABASE Syntax — Официальное руководство по команде
DROP DATABASE
. - How to use dynamic SQL in stored procedures MySQL – Stack Overflow — Обсуждение использования динамического SQL в хранимых процедурах MySQL.
- MySQL :: MySQL 8.0 Reference Manual :: 25 INFORMATION_SCHEMA Tables — Документация по INFORMATION_SCHEMA для работы с метаданными баз данных.
- How To Create and Use Bash Scripts – DigitalOcean — Полезное руководство по созданию и использованию bash-скриптов для автоматизации задач MySQL.
- How to securely hash passwords? – Information Security Stack Exchange — Статья о том, как защитить процессы хеширования паролей в контексте MySQL.