Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
​​Иногда возникает задача быстро удалить все таблицы в базе данных mysql, не удаляя саму базу данных. Доступ к базе через консоль. В общем случае удалить конкретную таблицу в базе db можно следующей командой: > use db; > drop table00 table01, table02; Если таблиц немного, то можно поступить и так. Но если их много, то нужен какой-то другой способ. Можно изобрести или поискать какой-то готовый велосипед на bash. Я предлагаю вам свой 😁 Берём mysqldump и делаем дамп только структуры, добавляя информацию об удалении таблиц перед их созданием: # mysqldump --add-drop-table --no-data db Теперь получить консольные команды на удаление всех таблиц базы данных проще простого. Грепаем получившийся дамп: # mysqldump --add-drop-table --no-data db | grep ^DROP То есть выводим все строки, которые начинаются с DROP. Это как раз то, что нам нужно. Далее можно либо взять только нужные строки с определёнными таблицами для удаления, либо сразу весь вывод отправить в консоль mysql и удалить все таблицы, оставив саму базу данных: # mysqldump --add-drop-table --no-data db | grep ^DROP | mysql db Не забудьте добавить авторизацию, если у вас она не настроена каким-то другим способом: # mysqldump -uuser -ppassword --add-drop-table --no-data db \ | grep ^DROP | mysql -uuser -ppassword db Таким простым способом, без скриптов, можно прямо в консоли сервера удалить все таблицы из базы данных mysql, не удаляя саму базу. ❓Может возникнуть вопрос, а почему не удалить всё же базу и не создать заново. Причин может быть несколько: 1️⃣ У вас нет прав на создание и удаление баз данных (наиболее частый случай). 2️⃣ Не помните точно параметры базы данных, не хочется вспоминать, искать, как создать новую базу данных с теми же параметрами, что стоят у текущей (мой случай). Если у вас есть какое-то свое простое решение по удалению таблиц из базы, делитесь в комментариях. #terminal #mysql