Як видалити базу даних mysql за допомогою командної оболонки


80

Я використовую пілони та sqlalchemy. Я постійно оновлюю файли схеми та видаляю та відтворюю базу даних, щоб можна було створити нову схему.

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

Як видалити команди оболонки Linux db / schema MySQL в Ubuntu Linux?


Це працює на будь-якій ОС, а не лише на Linux
astroanu

Відповіді:


140

Спробуйте виконати таку команду:

mysqladmin -h[hostname/localhost] -u[username] -p[password] drop [database]

7
Ваш пароль буде доступний будь-якому іншому користувачеві системи. ps aux. Подумайте про використання .my.cnfзамість цього.
gahooa

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

якщо ви хочете на власні очі побачити, не входячи в систему, чи дійсно ваша база даних здута, я гадаю mysqlshow -u [username] -p[Password]. Ви навіть можете зробити grep для бази даних mysqlshow -u [username] -p[password] | grep [database].
xpros

Без пробілів між -u та ім'ям користувача напевно?
AmazingTurtle

Чи є спосіб скинути всі бази даних однією командою замість того, щоб записати команду для кожної БД?
Aitazaz Khan

37

Загалом, ви можете передати будь-який запит mysqlіз оболонки за допомогою опції -e.

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

5
Ваш пароль буде доступний будь-якому іншому користувачеві системи. ps aux. Подумайте про використання .my.cnfзамість цього.
gahooa

3
Або, можливо, просто зауважте, що це лише для вашого місцевого середовища розробки, де ви єдиний користувач.
Елайджа Лінн

4
Прапор -D не потрібен для ВИДАЛЕННЯ бази даних. Цього має бути достатньо з:mysql -uuser -ppass -e "DROP DATABASE dbname"
dani24

26

Якщо ви втомилися вводити свій пароль, створіть файл (chmod 600) ~/.my.cnfі вставте в нього:

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

Заради розмови:

echo 'DROP DATABASE foo;' | mysql

2
хоча це середовище для розробки, я насправді не дуже хвилююся щодо пароля, видимого для інших. Мені дуже подобається ваша ідея .my.cnf. +1 до ідеї

1
Для автоматичного сценарію найкраща друга частина відповіді. Щиро дякую.
dasm

13

Інший підходящий спосіб:

$ mysql -u you -p
<enter password>

>>> DROP DATABASE foo;

В основному це те саме, що він робив.
Скотті T

4
Ілюстрування можливостей командного рядка не вимагає голосування проти. Він використовував браузер запитів MySql. Не зовсім однаково.
gahooa

Але в заяві про проблему чітко сказано, що він хоче "команду оболонки".
iankit

10

Не потрібно MyScladmin:

просто використовуйте командний рядок mysql

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

Це надішле команду drop, хоча я б не передав пароль таким чином, оскільки він буде доступний іншим користувачам системи через ps aux


1

MySQL припинив видалення команди бази даних із оболонки клієнта mysql. Потрібно використовувати mysqladmin для скидання бази даних.


Це не дає відповіді на запитання. Щоб критикувати або вимагати роз’яснень від автора, залиште коментар під його публікацією - ви завжди можете коментувати власні публікації, і коли у вас буде достатня репутація, ви зможете коментувати будь-яку публікацію .
Skynet

Він не відповідає безпосередньо на запитання, оскільки питання є занадто розмитим.
Ilija

1

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

$ mysqladmin -h [host] -u [user] -p drop [ ім'я_бази даних]

[Введіть пароль]

Ви дійсно хочете скинути базу даних «вільних волосся» [р / н]: y


0
[root@host]# mysqladmin -u root -p drop [DB]

Enter password:******

Я не думаю, що це відкриває пароль іншим користувачам на сервері, як це роблять багато інших відповідей; натомість у користувача просять про це після того, як користувач натисне клавішу Enter. Можливо, люди цього не усвідомили, коли проголосували за, можливо, найкращі дві відповіді!
Сильно нерегулярно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.