Cách xóa cơ sở dữ liệu mysql thông qua lệnh shell


80

Tôi sử dụng giá treo và 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.

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 hoàn toàn db / schema của MySQL trong Ubuntu Linux?


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

Câu trả lời:


139

Hãy thử lệnh sau:

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

7
Mật khẩu của bạn sẽ có thể truy cập được cho bất kỳ người dùng nào khác trên hệ thống. ps aux. Cân nhắc sử dụng .my.cnfthay thế.
gahooa

Tôi là người mới làm quen với kịch bản shell, 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 đang tìm kiếm một phương pháp để giảm và tạo db từ bên trong tập lệnh của mình, thì phương pháp này phù hợp với tôi.
kyle

Nếu bạn muốn tự mình xem mà không cần đăng nhập nếu thực sự cơ sở dữ liệu của bạn bị thổi bay, tôi thích mysqlshow -u [username] -p[Password]. Bạn thậm chí có thể grep cho cơ sở dữ liệu mysqlshow -u [username] -p[password] | grep [database].
xpros

Chắc chắn không có khoảng trắng giữa -u và tên người dùng?
AmazingTurtle

Có cách nào để loại bỏ tất cả các cơ sở dữ liệu bằng một lệnh duy nhất thay vì viết ra lệnh cho mỗi DB không?
Aitazaz Khan

36

Nói chung, bạn có thể chuyển bất kỳ truy vấn nào đến mysqltừ shell với tùy chọn -e.

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

5
Mật khẩu của bạn sẽ có thể truy cập được cho bất kỳ người dùng nào khác trên hệ thống. ps aux. Cân nhắc sử dụng .my.cnfthay thế.
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 cục bộ của bạn, nơi bạn là người dùng duy nhất.
Elijah Lynn

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

26

Nếu bạn cảm thấy mệt mỏi với việc nhập mật khẩu của mình, hãy tạo tệp (chmod 600) ~/.my.cnfvà đặt vào đó:

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

Vì lợi ích của cuộc trò chuyện:

echo 'DROP DATABASE foo;' | mysql

2
mặc dù đó 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ị cho người khác. Tôi rất thích ý tưởng .my.cnf của bạn. +1 về ý 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.
dasm

13

Một cách phù hợp khác:

$ mysql -u you -p
<enter password>

>>> DROP DATABASE foo;

Về cơ bản, điều đó giống với những gì anh ấy đang làm.
Scottie T

4
Minh họa các khả năng trên dòng lệnh không đảm bảo một cuộc bỏ phiếu xuống. Anh ấy đang sử dụng MySql Query Browser. Không giống lắm.
gahooa

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

10

Không cần mysqladmin:

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

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

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


1

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


Đ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ả, hãy để 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 chính mình và khi bạn có đủ uy tín, bạn sẽ có thể nhận xét về bất kỳ bài đăng nào .
Skynet

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 [host] -u [user] -p drop [database_name]

[Nhập mật khẩu]

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


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

Enter password:******

Tôi không nghĩ rằng điều này làm lộ mật khẩu cho những 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 nhấn enter. Có thể mọi người đã không nhận ra điều này khi họ từ chối hai câu trả lời có thể là tốt nhất!
Rất bất thường
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.