Перейти к содержимому


Как удалить все SQL-таблицы с неким префисом?


  • Вы не можете ответить в тему
Сообщений в теме: 11

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 May 2012 - 05:59 PM

Что-то у меня накопилось уже под десяток тестовых ShopCMS-ов, созданных под какие-то разовые нужды. Все они создавались в пределах одной базы отличаясь лишь префиксом, т.е. drop database я сделать не могу :).
Есть какой-то способ удалить все таблицы с конкретным префиксом используя только SQL-синтаксис или по любому маленький PHP-файлик писать?

PS. Про PHPadmin (или как там его) не надо, нет его у меня. И, надеюсь, никогда не будет.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 06 May 2012 - 06:21 PM

либо php, либо sh, ну и как вариант попробывать поизучать http://dev.mysql.com...-statement.html


пример для bash:

for table in `echo "show tables" | mysql -uUSER -hHOST -pPASWD DATABASE | egrep -v '(Database|information_schema)' | egrep "REGEXP"`; do echo "DROP TABLE $table" | mysql -uUSER -hHOST -pPASWD uDATABASE; done
  • 0
Изображение Изображение Изображение

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 May 2012 - 08:34 PM

либо php

Ну, я примерно так и предполагал, что это будет самый простой путь :(.
#!/usr/bin/php
<?php
require_once "core/config/connect.inc.php";
require_once "core/includes/database/".DBMS.".php";
$prefix = array('1qaz_','shop_','shop1_','shop2_','shop4_','lwiv_');
db_connect(DB_HOST,DB_USER,DB_PASS) or die (db_error());
db_select_db(DB_NAME) or die (db_error());
foreach ($prefix as $pref)
{
$data = mysql_query("SHOW TABLES LIKE '".str_replace('_','\_',$pref)."%'") or die(mysql_error());
while ($row = mysql_fetch_row($data))
{
echo $row[0]."\n";
mysql_query("DROP TABLE ".$row[0]);
}
}
db_disconnect();
?>

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 msidog

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 166 сообщений
Репутация: 42
Ассистент
  • ГородКривой Рог

Отправлено 07 May 2012 - 06:31 AM

зря вы так про phpmyadmin
очень полезная вещь
  • 0
Мой хостинг <<<invitehost.ru>>>
vsupport.club --Лучшее решение всех проблем ;)

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 May 2012 - 11:48 AM

зря вы так про phpmyadmin очень полезная вещь

Да я нисколько не сомневаюсь в его полезности. Более того, где-то на конторских серверах он даже установлен. Но за год было буквально две-три задачи, где phpmyadmin имел явно преимущество перед консолью. А вот попытки влезть через phpmyadmin я наблюдаю в логах чуть ли не ежедневно. Учитывая известность продукта как "дыра на дыре" (даже при инсталляции написано что-то в стиле "безопасность - Ваша забота, а не наша") и то, что я не считаю себя специалистом по безопасности - я его не ставлю.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 07 May 2012 - 11:57 AM

Да я нисколько не сомневаюсь в его полезности. Более того, где-то на конторских серверах он даже установлен. Но за год было буквально две-три задачи, где phpmyadmin имел явно преимущество перед консолью. А вот попытки влезть через phpmyadmin я наблюдаю в логах чуть ли не ежедневно. Учитывая известность продукта как "дыра на дыре" (даже при инсталляции написано что-то в стиле "безопасность - Ваша забота, а не наша") и то, что я не считаю себя специалистом по безопасности - я его не ставлю.


Ну вопервых никто не мешает тебе его установить (установка заключается только в заливании файлов, т.е. никакая специфическая инсталляция не требуется) выполнить необходимые действия (тем самым ты увидишь команды(запросы) которые тебе нужны для пхп.) а после удалить.
Что же касается безопастности, то как-то не особо наслышан что там дыры, учитывая что он установлен на ВСЕХ хостингах....... без знания логина и пароля от БД туда не зайдешь.

phpMyAdmin выиграл несколько призов. Среди прочих, он был выбран как лучшая программа на PHP, и каждый год получает приз сообщества SourceForge.net, как лучшая программа для системных аднимистраторов.


Но если ты не доверяешь самому скрипту переименуй директорию например в fakldjf65_4af654sdf654 :) и поставь пароль на директорию. и никто твою базу не потревожит и тебе будет комфортно.
Сам скрипт выложил в Архиве.
  • 0

#7 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 May 2012 - 02:27 PM

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

Вот те здрасьте.... Если бы я эти команды не знал, то мне не было бы комфортно в обычной mysql-консоли, логично? :).
Вопрос был в основном на тему "вдруг я все таки что-то не знаю и набор SQL-команд позволяет таки удалять таблицы по маске".
Выяснилось (спасибо eugene_wb), что не по маске, но таки можно используя LOOP и создание процедуры. Но это уже ничем не отличается от создания процедуры на PHP, а на PHP таки проще, т.к. худо-бедно изучено.

Что же касается безопастности, то как-то не особо наслышан что там дыры, учитывая что он установлен на ВСЕХ хостингах

Вот только на хостингах обычно безопасностью занимаются люди, которые в этом (предположительно) хорошо разбираются, а не увидели линукс чуть больше года назад. Возможно, что-то изменилось в phpmyadmin, но примерно с год назад, когда я его ставил он честно предупреждал, что вопросы безопасности не его забота, а моя. В принципе, это правильно. Но при этом давал по умолчанию свободный доступ на исполнение и/или скачивание (не помню уже) каких-то своих файлов, для которых это категорически не стоило делать. У себя я это решал путем установки phpadmin-а на другой порт и запрещая доступ к этому порту со всех IP-адресов кроме своих, но - не специалист! - вовсе не уверен, что перекрыл все лазейки.

Так что пока необходимость в этом инструменте возникает раз в пол-года - я обойдусь без него. Все остальное я, скорее всего, банально быстрее сделаю в консоли. У меня до сих пор есть сервера на NT 4.0 (один уже остался, но есть и его достаточно в том месте) и я напрочь не понимаю, когда на нечто новое переходят не по собственной небоходимости, а исходя из мнения других людей или даже потому, что этот продукт "лучший выбор года".
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#8 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 07 May 2012 - 02:44 PM

Вот те здрасьте.... Если бы я эти команды не знал, то мне не было бы комфортно в обычной mysql-консоли, логично?


Ну судя по тому, что ты не так давно спрашивал каким запросом создать поле в существующей таблице....... (чтобы не гуглить)................ ))
  • 0

#9 eugene_wb

    Продвинутый пользователь

  • Модераторы
  • 827 сообщений
Репутация: 167
Мастер

Отправлено 07 May 2012 - 02:46 PM

я все таки поддержжу phpmyadmin, хотя тоже могу все сделать из консоли,

минусов писать не буду, просто опишу плюсы:
-- реализация практически всех действий одной кнопкой (действительно удобно и быстро)
-- возможность просматривать наличие полей и т.д. при составлении запросов
-- дамп базы через web в один клик
-- делать что то визуально, а на выходе уже получить готовый запрос

как безопасноть, у меня стоит доступ к phpmyadmin только через vpn и на отдельном vhost

P.S. это действительно удобно, стоит просто попробывать

некоторые еще используют http://www.chive-project.com, как бы аналог phpmyadmin
  • 0
Изображение Изображение Изображение

#10 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 May 2012 - 03:15 PM

Ну судя по тому, что ты не так давно спрашивал каким запросом создать поле в существующей таблице.

Ну так не нужен был никогда этот запрос - я и не знал. Понадобился - узнал. Это куда быстрее, чем возиться с phpadmin. Нет?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#11 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 07 May 2012 - 04:06 PM

Ну так не нужен был никогда этот запрос - я и не знал. Понадобился - узнал. Это куда быстрее, чем возиться с phpadmin. Нет?

нет не быстрее ))) ведь ты задал вопрос - я зашел в первый попавшийся пхпмайадмин и скопировал тебе ответ ))))))
Не ну я не уговариваю тебя его использовать, пожалуйста если тебе удобнее спрашивай на форуме, я никапельки не возражаю, если буду в сети обязательно скопирую снова.
Просто хочу объяснить что ничего страшного в нем нет )) а наоборот довольно удобный скрипт как для новичков так и для профи.
  • 0

#12 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 May 2012 - 05:27 PM

Не смущайте меня, большие белые люди :).
Я все равно не поставлю себе PhpMyAdmin пока в нем не будет реальной настоятельной надобности как в инструменте.
Ну а как будет настоятельная надобность, так поставлю сразу и не раздумывая.
Как, например, произошло с нормальными браузерами вместо IE.
Пока надобности нет.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)