シェルコマンドを使用してmysqlデータベースを削除する方法


80

私はパイロンとsqlalchemyを使用しています。私は常にスキーマファイルを更新し、データベースを削除して再作成し、新しいスキーマを作成できるようにしています。

MySqlクエリブラウザを開いてこれを行うたびに、データベース/スキーマにログインして削除します。

UbuntuLinuxでMySQLdb / schemaをLinuxシェルコマンドで削除するにはどうすればよいですか?


これは、LinuxだけでなくすべてのOSで機能します
astroanu 2015年

回答:


140

次のコマンドを試してください。

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

7
パスワードは、システム上の他のユーザーがアクセスできます。 ps aux.my.cnf代わりに使用することを検討してください。
gahooa 2010年

私はシェルスクリプトの初心者ですが、スクリプト内からデータベースを削除して作成する方法を探している人にとっては、この方法が役に立ちました。
カイル2013年

ログインせずに自分の目で確かめたいのなら、本当にデータベースが壊れているのなら、私は空想mysqlshow -u [username] -p[Password]です。データベースをgrepすることもできますmysqlshow -u [username] -p[password] | grep [database]
xpros 2013

確かに-uとユーザー名の間にスペースがありませんか?
AmazingTurtle 2016年

DBごとにコマンドを書き留める代わりに、1つのコマンドですべてのデータベースを削除する方法はありますか?
AitazazKhan18年

37

一般に、mysql-eオプションを使用して、任意のクエリをシェルからに渡すことができます。

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

5
パスワードは、システム上の他のユーザーがアクセスできます。 ps aux.my.cnf代わりに使用することを検討してください。
gahooa 2010年

3
または、これはあなたが唯一のユーザーであるローカル開発環境専用であることに注意してください。
Elijah Lynn

4
データベースをドロップするために-Dフラグは必要ありません。mysql -uuser -ppass -e "DROP DATABASE dbname"
それで

26

パスワードの入力にうんざりしている場合は、(chmod 600)ファイルを作成して、次のように入力します~/.my.cnf

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

会話のために:

echo 'DROP DATABASE foo;' | mysql

2
開発環境ですが、他人に見えるパスワードについてはあまり気になりませんでした。私はあなたの.my.cnfのアイデアがとても好きです。アイデアの1

1
自動スクリプトの場合、回答の2番目の部分が最適です。まことにありがとうございます。
dasm 2013年

13

別の適切な方法:

$ mysql -u you -p
<enter password>

>>> DROP DATABASE foo;

それは基本的に彼がやっていることと同じです。
スコッティT

4
コマンドラインで可能性を説明しても、反対票を投じる必要はありません。彼はMySqlクエリブラウザを使用していました。まったく同じではありません。
gahooa 2010年

しかし、問題の記述は、彼が「シェルコマンド」を望んでいることを明確に述べています。
iankit 2014年

10

mysqladminの必要はありません:

mysqlコマンドラインを使用するだけです

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

これにより、dropコマンドが送信されますが、ps auxを介してシステムの他のユーザーに公開されるため、この方法ではパスワードを渡しません。


1

MySQLは、mysqlクライアントシェルからのdropdatabaseコマンドを廃止しました。データベースを削除するには、mysqladminを使用する必要があります。


これは質問に対する答えを提供しません。著者に批評したり、説明を求めたりするには、投稿の下にコメントを残します。自分の投稿にいつでもコメントできます。十分な評判得られたら、どの投稿にもコメントできます。
スカイネット

質問が曖昧すぎるため、直接質問に答えることはありません。
ilija 2015年

1

データベースは次のように直接削除できます。

$ mysqladmin -h [host] -u [user] -p drop [database_name]

[パスワードを入力する]

'hairfree'データベースを本当に削除しますか[y / N]:y


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

Enter password:******

他の多くの回答のように、これによってサーバー上の他のユーザーにパスワードが公開されるとは思いません。代わりに、ユーザーがEnterキーを押した後、ユーザーはそれを求められます。おそらく人々は、おそらく最良の2つの答えが何であるかを否定したときに、これに気付いていませんでした。
非常に不規則な
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.