2010-10-20 36 views
29

Tôi đang cố gắng tập hợp tất cả các tùy chọn mà tôi cần cho mysqldump để tạo mọi thứ được cơ sở dữ liệu ứng dụng sử dụng vào một tập lệnh duy nhất. Điều này bao gồm cơ sở dữ liệu chính nó và tất cả người dùng cơ sở dữ liệu/mật khẩu/đặc quyền.Sử dụng mysqldump và người dùng cơ sở dữ liệu

Tôi đã có tất cả tìm ra với ngoại lệ của mảnh dùng ... đây là những gì tôi đang sử dụng:

mysqldump -h host -u root -p \ 
    --add-drop-database --routines -B database_name > backup.sql 

Vì vậy, tôi thiếu gì?

+0

MySQL sẽ không được lưu trữ trong thư mục 'database_name'. – ceejayoz

+0

Tôi muốn liên kết đến [giải pháp này trong DBA stackexchange] (http://dba.stackexchange.com/questions/23265/mysql-show-grants-for-all-users/127529#127529). – knocte

Trả lời

36

Người dùng/mật khẩu/đặc quyền cơ sở dữ liệu được lưu giữ trong cơ sở dữ liệu mysql và sẽ không bị bán phá giá với lệnh kết xuất của bạn. Bạn sẽ có thêm cơ sở dữ liệu cũng như để danh sách của DBS để đổ:

mysqldump ... --routines --databases database_name mysql > backup.sql 

hay chỉ đổ tất cả mọi thứ:

mysqldump ... --routines --all-databases > backup.sql 
+0

Hoàn hảo - đó là những gì tôi vừa phát hiện ra. Tôi muốn đề nghị rằng chúng tôi chỉ cảnh báo những người bán phá giá/khôi phục lại db mysql bằng cách sử dụng tập lệnh mà tôi liên kết đến có thể có một số hiệu ứng ngoài ý muốn. nếu hai máy chủ không phải là hình ảnh phản chiếu của nhau (chúng không có cùng một db trên chúng). –

+0

Hãy nhớ rằng cơ sở dữ liệu mysql có thông tin về cơ sở dữ liệu mà bạn không thể bán phá giá. Tôi không biết điều gì sẽ xảy ra khi bạn nhập siêu dữ liệu đó vào một máy chủ cơ sở dữ liệu mới. – Halfgaar

+0

Tôi thực sự muốn đối diện. Tôi muốn tất cả các tiêu chuẩn "" cơ sở dữ liệu bán phá giá, nhưng không phải là thông tin người dùng vv Vì vậy, tôi đã sử dụng một danh sách rõ ràng của dbs, chứ không phải là tất cả dbs để tránh bán phá giá "mysql" db. – BuvinJ

9

Vì vậy, tôi đã có một sự hiểu lầm cơ bản. Người dùng không cụ thể cho một cơ sở dữ liệu, nhưng được tạo ra ở cấp độ máy chủ.

Bạn có thể xem tất cả các người dùng hiện tại với các truy vấn sau đây:

SELECT * FROM mysql.user; 

Biết được điều này, nó khá rõ ràng rằng mysqldump không nên làm bất cứ điều gì với người dùng. Tuy nhiên, nếu bạn cần câu trả lời để xuất/nhập người dùng và tôi khuyên bạn nên kiểm tra bài viết sau - nó đã giúp tôi.

http://pento.net/2009/03/12/backing-up-permissions-for-individual-databases/

lời xin lỗi của tôi cho tiếng ồn trên bảng, nhưng tôi figured tôi muốn rời khỏi bài trong trường hợp bất cứ ai khác có sự hiểu lầm tương tự.

+4

Không, đây chỉ là việc cần làm. Ngoài ra, nếu bài đăng này là những gì thực sự cho phép bạn giải quyết nó, thì bạn nên đánh dấu câu trả lời này là "câu trả lời" thay vì câu trả lời khác. Chỉ nghĩ rằng tôi sẽ chia sẻ. – jcolebrand

+3

FYI liên kết được tham chiếu hiển thị câu lệnh SQL đưa ra lỗi với thông tin "Sử dụng sai UNION và INTO", giải pháp là chuyển INTO sang câu lệnh SELECT cuối – knocte

+0

Yep đây là câu trả lời. Nó trả lời VÀ bạn sẽ cần phải sử dụng bộ não của bạn một chút không chỉ sao chép qua một số lệnh guy – Johny19

19

Khi bán phá giá cơ sở dữ liệu mysql, đừng quên: Người dùng

--flush-privileges Emit a FLUSH PRIVILEGES statement after dumping the mysql 
        database. This option should be used any time the dump 
        contains the mysql database and any other database that 
        depends on the data in the mysql database for proper 
        restore. 
+0

Đây là những gì đã làm cho các trick cho tôi. Cảm ơn –

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