Tôi đang rời khỏi Linode vì tôi không cần các kỹ năng sysadmin của Linux; trước khi tôi hoàn thành việc chuyển đổi sang một dịch vụ thân thiện hơn, tôi cần tải xuống nội dung của cơ sở dữ liệu MySQL. Có cách nào tôi có thể làm điều này từ dòng lệnh?
Tôi đang rời khỏi Linode vì tôi không cần các kỹ năng sysadmin của Linux; trước khi tôi hoàn thành việc chuyển đổi sang một dịch vụ thân thiện hơn, tôi cần tải xuống nội dung của cơ sở dữ liệu MySQL. Có cách nào tôi có thể làm điều này từ dòng lệnh?
Câu trả lời:
Bạn có thể thực hiện điều này bằng cách sử dụng mysqldump chức năng dòng lệnh .
Ví dụ:
Nếu đó là toàn bộ DB, thì:
$ mysqldump -u [uname] -p db_name > db_backup.sql
Nếu đó là tất cả các DB, thì:
$ mysqldump -u [uname] -p --all-databases > all_db_backup.sql
Nếu đó là các bảng cụ thể trong DB, thì:
$ mysqldump -u [uname] -p db_name table1 table2 > table_backup.sql
Bạn thậm chí có thể tự động nén đầu ra bằng cách sử dụng gzip (nếu DB của bạn rất lớn):
$ mysqldump -u [uname] -p db_name | gzip > db_backup.sql.gz
Nếu bạn muốn thực hiện việc này từ xa và bạn có quyền truy cập vào máy chủ được đề cập, thì điều sau đây sẽ hoạt động (giả sử máy chủ MySQL nằm trên cổng 3306):
$ mysqldump -P 3306 -h [ip_address] -u [uname] -p db_name > db_backup.sql
Nó sẽ thả .sql
tập tin vào thư mục bạn chạy dòng lệnh từ đó.
EDIT: Được cập nhật để tránh đưa mật khẩu vào các lệnh CLI, sử dụng -p
tùy chọn không có mật khẩu. Nó sẽ nhắc bạn cho nó và không ghi lại nó.
wget
hoặc scp
sẽ cần thiết để truy xuất tệp đã nói khi được tạo.
>
để lưu, tôi thay vì sử dụng -r
để tránh rắc rối với các ký tự nước ngoài, hoặc cơn ác mộng liên quan đến các vấn đề mã hóa, như đã nêu trong bài viết này .
--result-file=db_backup.sql
thay vì > db_backup.sql
. Trích dẫn từ tài liệu MySQL : "UTF-16 không được phép dưới dạng bộ ký tự kết nối (xem Bộ ký tự khách hàng không thể chấp nhận ), vì vậy tệp kết xuất sẽ không tải chính xác. Để khắc phục sự cố này, hãy sử dụng --result-file
tùy chọn tạo đầu ra trong Định dạng ASCII ".
Trong các phiên bản mới nhất của mysql, ít nhất là của tôi, bạn không thể đặt pass của mình trực tiếp vào lệnh.
Bạn phải chạy:
mysqldump -u [uname] -p db_name > db_backup.sql
và sau đó nó sẽ hỏi mật khẩu.
-p
Nếu tải xuống từ máy chủ từ xa, đây là một ví dụ đơn giản:
mysqldump -h my.address.amazonaws.com -u my_username -p db_name > /home/username/db_backup_name.sql
-P cho biết bạn sẽ nhập mật khẩu, nó không liên quan đến db_name. Sau khi nhập lệnh, bạn sẽ được nhắc nhập mật khẩu. Nhập nó vào và nhấn enter.
Trên các cửa sổ, bạn cần chỉ định thùng mysql nơi mysqldump.exe nằm.
cd C:\xampp\mysql\bin
mysqldump -u[username] -p[password] --all-databases > C:\localhost.sql
lưu cái này vào một tệp văn bản như backup.cmd
mysql
các lệnh từ mọi nơi mà không có trong thư mục của nó.
Mở Dấu nhắc lệnh và gõ trực tiếp lệnh này. Đừng vào bên trong mysql và sau đó gõ lệnh này.
mysqldump -u [uname] -p[pass] db_name > db_backup.sql
Đi đến thư mục cài đặt MySQL và mở cmd từ đó. Sau đó thực hiện lệnh dưới đây để có được bản sao lưu cơ sở dữ liệu của bạn.
mysqldump -u root -p --add-drop-database --databases db> C:\db-dontdelete\db.sql
Chỉ cần gõ mysqldump
hoặc mysqldump --help
trong cmd của bạn sẽ hiển thịhow to use
Đây là kết quả cmd của tôi
C:\Program Files\MySQL\MySQL Server 5.0\bin>mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
Đối với những người muốn nhập mật khẩu trong dòng lệnh. Có thể nhưng khuyên bạn nên chuyển nó bên trong dấu ngoặc kép để ký tự đặc biệt sẽ không gây ra vấn đề gì.
mysqldump -h'my.address.amazonaws.com' -u'my_username' -p'password' db_name > /path/backupname.sql
Sử dụng cái này Nếu bạn có cơ sở dữ liệu với tên archiedb, hãy sử dụng mysql -p --database archiedb> /home/database_backup.sql
Giả sử đây là linux, chọn nơi lưu tập tin sao lưu.
Lưu ý: Bước này chỉ xuất hiện sau khi bỏ tệp MySQL của bạn (mà hầu hết các câu trả lời ở trên đã giải quyết).
Nó giả định rằng bạn có tệp kết xuất đã nói trong máy chủ từ xa và bây giờ bạn muốn đưa nó xuống máy tính cục bộ của mình.
Để tải .sql
tệp bị đổ từ máy chủ từ xa về máy tính cục bộ của bạn, hãy làm
scp -i YOUR_SSH_KEY your_username@IP:name_of_file.sql ./my_local_project_dir