Я столкнулся с проблемой с моими базами данных, и приведенные выше решения не работали.
Я просто хотел удалить все свои базы данных, но у меня была проблема с их именами. Действительно, у меня были базы данных, названные так:
093e83d-somename;
39s2ak3-anothername;
Самый простой способ удалить эти базы данных (проверено на MariaDB ) - выполнить следующую команду:
DROP DATABASE `093e83d-somename`;
Этот тип имени кажется проблемой, когда мы напрямую хотим выполнить команду SQL из файла bash, потому что мы должны указывать имя базы данных между кавычками (``).
Если у вас такая же проблема, и если у вас много баз данных, вам просто нужно создать пакетный скрипт со всеми необходимыми командами, а затем выполнить его на своем SQL-сервере.
Пример с test.sh :
#!/bin/bash
# Informations needed
MUSER="root"
MPASS="pass"
# We get the needed binaries
MYSQL=$(which mysql)
AWK=$(which awk)
GREP=$(which grep)
# We get all the DB names in DB
DB=$($MYSQL -u $MUSER -p$MPASS -e 'show databases' | $AWK '{ print $1}' | $GREP -v '^Databases' )
# For each database, we write the drop command in the file test.sql
for t in $DB
do
echo -e "DROP DATABASE \`$t\`;" >> test.sql
done
# We execute the created SQL file with all the DROP commands
$MYSQL -u $MUSER -p$MPASS -e 'source test.sql;'
# We finally delete the created file.
rm test.sql
Я думаю, что этот скрипт работает во всех случаях. Надеюсь, это помогло.