2010-01-12 3 views
69

Я использую пилоны и sqlalchemy. Я постоянно обновляю файлы схемы и удаляю и воссоздаю базу данных, чтобы можно было создать новую схему.Как удалить базу данных mysql с помощью команды оболочки

Каждый раз, когда я это делаю, открывая браузер запросов MySql и вхожу в систему и удаляю базу данных/схему.

Как удалить строчные команды оболочки Linux db/schema в Ubuntu Linux?

+0

Это работает на любой ОС, а не только на Linux – astroanu

ответ

120
mysqladmin -u[username] -p[password] drop [database] 
+11

спасибо Alex. Я добавил -f для принудительного удаления. – 2010-01-12 16:47:41

+5

. Ваш пароль будет доступен любому другому пользователю в системе. 'ps aux'. Вместо этого рассмотрите использование '.my.cnf'. – gahooa

+0

Я новичок в сценариях оболочки, но для тех из вас, кто нашел это в поисках метода для удаления и создания db изнутри вашего скрипта, этот метод работал для меня. – kyle

13

Другой подходящий способ:

$ mysql -u you -p 
<enter password> 

>>> DROP DATABASE foo; 
+0

Это в основном то же самое, что он делал. –

+4

Иллюстрирование возможностей в командной строке не гарантирует нисходящее голосование. Он использовал MySql Query Browser. Не совсем то же самое. – gahooa

+0

Но в заявлении о проблеме явно говорится, что он хочет «команду оболочки». – iankit

22

Если вы устали от ввода пароля, создайте (CHMOD 600) файл ~/.my.cnf и положить в него:

[client] 
user = "you" 
password = "your-password" 

Для для разговора:

echo 'DROP DATABASE foo;' | mysql 
+2

Хотя это среда разработки, я действительно не очень беспокоюсь о том, что пароль видим другим. Мне очень нравится ваша идея .my.cnf. +1 по идее – 2010-01-12 18:12:47

+1

Для автоматического сценария вторая часть ответа - лучшая. Большое спасибо. –

+0

wow, спасибо за это, я не знал, что это работает :) –

24

В общем, вы можете передать любой запрос в mysql из оболочки с параметром -e.

mysql -u username -p -D dbname -e "DROP DATABASE dbname" 
+4

Ваш пароль будет доступен любому другому пользователю в системе. 'ps aux'. Вместо этого рассмотрите использование '.my.cnf'. – gahooa

+3

Или, может быть, просто запомните, что это только для вашей локальной среды разработки, где вы единственный пользователь. –

+2

Флаг -D не нужен для DROP базы данных. Этого должно быть достаточно: 'mysql -uuser -ppass -e" DROP DATABASE dbname "' – dani24

7

Нет необходимости mysqladmin:

просто использовать MySQL командной строки

mysql -u [username] -p[password] -e 'drop database db-name;' 

Это пошлет команду падения, хотя я бы не передавать пароль таким образом, как это будет подвергаться другим пользователям системы через пс Окс

0
[[email protected]]# mysqladmin -u root -p drop [DB] 

Enter password:****** 
+0

Я не думаю, что это предоставляет пароль другим пользователям на сервере, как и многие другие ответы; вместо этого пользователь запрашивает его после того, как пользователь нажимает Enter. Возможно, люди этого не осознали, когда они отказались от двух возможных ответов. –

2

MySQL отменил команду базы данных удалений из оболочки клиента mysql. Необходимо использовать mysqladmin для удаления базы данных.

+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). – Skynet

+0

Он не отвечает на вопрос напрямую, так как вопрос слишком расплывчатый. – Ilija

1

Вы можете удалить базу данных непосредственно, как:

$ mysqladmin -h [хозяин] -u [пользователь] -p падение [database_name]

[Enter Password]

Действительно ли вы хотите сбросить базу данных «без волос» [y/N]: y

Смежные вопросы