2010-01-12 42 views
69

Tôi sử dụng giá treo và chữ sqlalchemy. Tôi liên tục cập nhật các tệp lược đồ và xóa và tạo lại cơ sở dữ liệu để có thể tạo lược đồ mới.Làm thế nào để xóa cơ sở dữ liệu mysql thông qua lệnh shell

Mỗi lần tôi làm điều này bằng cách mở Trình duyệt truy vấn MySql và đăng nhập và xóa cơ sở dữ liệu/lược đồ.

Làm cách nào để xóa các lệnh shell linux/db toàn bộ MySQL trong Ubuntu Linux?

+0

Điều này hoạt động trên bất kỳ hệ điều hành không chỉ linux – astroanu

Trả lời

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

cảm ơn Alex. Tôi đã thêm -f để buộc xóa –

+5

Mật khẩu của bạn sẽ có thể truy cập được đối với bất kỳ người dùng nào khác trên hệ thống. 'ps aux'. Thay vào đó, hãy cân nhắc sử dụng '.my.cnf'. – gahooa

+0

Tôi là người mới dùng shell scripting, nhưng đối với những người trong số các bạn tìm thấy phương pháp này để tìm kiếm một phương thức để thả và tạo db từ bên trong kịch bản lệnh của bạn, phương thức này làm việc cho tôi. – kyle

13

Một cách thích hợp:

$ mysql -u you -p 
<enter password> 

>>> DROP DATABASE foo; 
+0

Về cơ bản giống như những gì anh ta đang làm. –

+4

Minh họa các khả năng trên dòng lệnh không đảm bảo bỏ phiếu xuống. Ông đã sử dụng MySql Query Browser. Không giống lắm. – gahooa

+0

Nhưng tuyên bố vấn đề nêu rõ rằng anh ta muốn một "lệnh shell". – iankit

22

Nếu bạn đang mệt mỏi vì gõ mật khẩu của bạn, tạo ra một (chmod 600) nộp ~/.my.cnf, và đặt trong nó:

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

Đối vì mục đích trò chuyện:

echo 'DROP DATABASE foo;' | mysql 
+2

mặc dù nó là môi trường phát triển, tôi thực sự không lo lắng nhiều về mật khẩu hiển thị với người khác. Tôi thích ý tưởng của bạn .my.cnf rất nhiều. +1 trên ý tưởng –

+1

Đối với tập lệnh tự động, phần thứ hai của câu trả lời là tốt nhất. Cảm ơn rất nhiều. –

+0

wow, cảm ơn vì điều này, tôi không biết điều này đang hoạt động :) –

24

Nói chung, bạn có thể chuyển bất kỳ truy vấn nào đến mysql từ trình bao có tùy chọn -e.

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

Mật khẩu của bạn sẽ có thể truy cập được đối với bất kỳ người dùng nào khác trên hệ thống. 'ps aux'. Thay vào đó, hãy cân nhắc sử dụng '.my.cnf'. – gahooa

+3

Hoặc có thể chỉ cần lưu ý rằng điều này chỉ dành cho môi trường phát triển địa phương của bạn, nơi bạn là người dùng duy nhất. –

+2

Cờ -D là không cần thiết để DROP một cơ sở dữ liệu. Nó sẽ là đủ với: 'mysql -uuser -ppass -e" DROP DATABASE dbname "' – dani24

7

Không cần mysqladmin:

chỉ cần sử dụng mysql dòng lệnh

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

này sẽ gửi lệnh thả mặc dù tôi sẽ không vượt qua được mật khẩu theo cách này vì nó sẽ được tiếp xúc cho những người dùng khác của hệ thống qua ps aux

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

Enter password:****** 
+0

Tôi không nghĩ rằng điều này cho thấy mật khẩu cho người dùng khác trên máy chủ, giống như nhiều câu trả lời khác làm; thay vào đó người dùng được yêu cầu nó sau khi người dùng truy cập vào. Có thể mọi người đã không nhận ra điều này khi họ downvoted những gì có thể là hai câu trả lời tốt nhất! –

2

MySQL đã ngừng lệnh thả cơ sở dữ liệu từ vỏ máy khách mysql. Cần sử dụng mysqladmin để thả một cơ sở dữ liệu.

+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của riêng bạn và sau khi bạn có đủ [danh tiếng] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). – Skynet

+0

Nó không trả lời câu hỏi trực tiếp vì câu hỏi quá mơ hồ. – Ilija

1

Bạn có thể loại bỏ cơ sở dữ liệu trực tiếp như:

$ mysqladmin -h [chủ] -u [user] -p thả [database_name]

[Nhập mật khẩu]

Bạn có thực sự muốn thả cơ sở dữ liệu 'không có lông' [y/N]: y

Các vấn đề liên quan