Удаление баз данных MySQL по префиксу: решение в PHP

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вам необходимо массово удалить базы данных MySQL, соответствующие определённой маске, можно составить список подходящих имен и использовать их в команде DROP DATABASE. Данная операция может быть выполнена одной командой:

shell
Скопировать код
mysql -u имя_пользователя -p -e "SHOW DATABASES LIKE 'шаблон%';" | grep 'шаблон' | xargs -I "{}" mysql -u имя_пользователя -p -e "DROP DATABASE \`{}\`;"

Подставьте в места имя_пользователя и шаблон% данные согласно вашим потребностям. Помните, что данная операция необратима, поэтому используйте её с большой осторожностью.

Кинга Идем в IT: пошаговый план для смены профессии

Понимаем команду: Вы уверены?

Прежде чем приступить к выполнению такой операции, убедитесь, что вам действительно необходимо удалить эти базы данных. Всякое действие, приводящее к потере данных, требует предварительного создания резервной копии и тестирования в изолированной среде.

Автоматическое удаление: Румба разработчика

В тех случаях, когда задача усложняется, можно обратиться к скриптам для автоматизации процесса удаления. Ниже представлен пример PHP-скрипта с этой функцией:

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 это происходит следующим образом:

Markdown
Скопировать код
Шкаф до:
📚📚📓📗[Дж.К.*]📘📙📚📚

Выполнение SQL-команды: 
**DROP DATABASES LIKE 'Дж.К.%';**

Шкаф после:
📚📚📓📗📘📙📚📚

Как по волшебству, SQL-запрос умело находит и удаляет нужные базы данных.

Другие безопасные альтернативы: Когда вы не любитель командной строки

Если вам сложно работать с командами, можно использовать графические интерфейсы, например, MySQL Workbench.

С помощью MySQL Workbench

В MySQL Workbench можно выполнить:

SQL
Скопировать код
SHOW DATABASES LIKE 'префикс%';

В результате вы получите список, где сможете вручную выполнить DROP, контролируя процесс удаления.

С помощью Python или Jython

Такие языки программирования как Python или Jython, предоставят больше гибкости, дополнительный контроль и возможность внедрения проверок безопасности.

Обращайте внимание на специальные символы

Если в названиях ваших баз данных присутствуют специальные символы, обязательно экранируйте их. Некоторые символы, например подчёркивание (_), в SQL используются как шаблоны.

shell
Скопировать код
mysql -u имя_пользователя -p -e "SHOW DATABASES LIKE 'шаблон\_%';" | grep 'шаблон' | xargs -I "{}" mysql -u имя_пользователя -p -e "DROP DATABASE \`{}\`;"

Полезные материалы

  1. MySQL :: MySQL 8.0 Reference Manual :: 13.1.22 DROP DATABASE Syntax — Официальное руководство по команде DROP DATABASE.
  2. How to use dynamic SQL in stored procedures MySQL – Stack Overflow — Обсуждение использования динамического SQL в хранимых процедурах MySQL.
  3. MySQL :: MySQL 8.0 Reference Manual :: 25 INFORMATION_SCHEMA Tables — Документация по INFORMATION_SCHEMA для работы с метаданными баз данных.
  4. How To Create and Use Bash Scripts – DigitalOcean — Полезное руководство по созданию и использованию bash-скриптов для автоматизации задач MySQL.
  5. How to securely hash passwords? – Information Security Stack Exchange — Статья о том, как защитить процессы хеширования паролей в контексте MySQL.