如何通过shell命令删除mysql数据库


80

我使用塔和sqlalchemy。我不断更新架构文件,删除并重新创建数据库,以便可以制作新的架构。

每次我通过打开MySql查询浏览器并登录并删除数据库/架构来执行此操作。

如何在Ubuntu Linux中删除完整的linux shell命令中的MySQL db / schema?


这可以在任何操作系统上运行,而不仅仅是Linux
astroanu 2015年

Answers:


138

尝试以下命令:

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

7
您的密码将可供系统上的任何其他用户访问。 ps aux。考虑使用.my.cnf代替。
gahooa

我是Shell脚本的新手,但对于那些发现此脚本的人,他们正在寻找一种从脚本内部删除并创建db的方法,因此该方法对我有用。
凯尔

如果您确实想看看自己而不登录就发现数据库确实崩溃了,请看mysqlshow -u [username] -p[Password]。您甚至还可以为数据库使用grep mysqlshow -u [username] -p[password] | grep [database]
xpros 2013年

确定-u和用户名之间没有空格?
AmazingTurtle,2016年

有什么方法可以用一个命令删除所有数据库,而不是为每个数据库写下命令?
Aitazaz Khan

36

通常,您可以mysql使用-e选项将任何查询从shell传递到。

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

5
您的密码将可供系统上的任何其他用户访问。 ps aux。考虑使用.my.cnf代替。
gahooa

3
也许只是做个说明,这仅适用于您是唯一用户的本地开发环境。
伊利亚·林恩

3
删除数据库不需要-D标志。应该满足以下条件:mysql -uuser -ppass -e "DROP DATABASE dbname"
dani24 '16

26

如果您厌倦了键入密码,请创建一个(chmod 600)文件~/.my.cnf,然后将其放入:

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

为了对话:

echo 'DROP DATABASE foo;' | mysql

2
尽管这是开发环境,但我真的不太担心别人看不到密码。我非常喜欢您的.my.cnf想法。这个想法+1

1
对于自动脚本,答案的第二部分是最好的。十分感谢。
dasm 2013年

13

另一种合适的方式:

$ mysql -u you -p
<enter password>

>>> DROP DATABASE foo;

基本上和他一直在做的一样。
Scottie T

4
在命令行上说明可能的情况并不能保证投反对票。他正在使用MySql查询浏览器。不太一样。
gahooa

但是问题陈述清楚地表明,他想要一个“ shell命令”。
iankit 2014年

10

无需mysqladmin:

只需使用mysql命令行

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

这将发送drop命令,尽管我不会以这种方式传递密码,因为它将通过ps aux暴露给系统的其他用户



1

您可以通过以下方式直接删除数据库:

$ mysqladmin -h [主机] -u [用户] -p drop [数据库名称]

[输入密码]

您是否真的要删除“ hairfree”数据库[y / N]:y


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

Enter password:******

我不认为这会像许多其他答案一样将密码暴露给服务器上的其他用户。而是在用户按下Enter键后向用户询问。人们可能对最好的两个答案一无所知,但却没有意识到这一点!
高度不规律,发生
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.