Làm cách nào để tạo một người dùng MySQL chỉ đọc cho mục đích sao lưu với mysqldump?


13

Tôi đang sử dụng automysqlbackuptập lệnh để kết xuất cơ sở dữ liệu mysql của mình, nhưng tôi muốn có một người dùng chỉ đọc để thực hiện việc này để tôi không lưu trữ mật khẩu cơ sở dữ liệu gốc của mình trong một tệp văn bản gốc.

Tôi đã tạo một người dùng như vậy:

grant select, lock tables on *.* to 'username'@'localhost' identified by 'password';

Khi tôi chạy mysqldump(thông qua automysqlbackuphoặc trực tiếp) tôi nhận được cảnh báo sau:

mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES

Tôi đang làm sai à? Tôi có cần tài trợ thêm cho người dùng chỉ đọc của tôi không? Hay chỉ có thể rootkhóa information_schemabàn? Chuyện gì đang xảy ra vậy?

Biên tập:

GAH và bây giờ nó hoạt động. Tôi có thể đã không chạy FLIV PRIVILEGES trước đây.

Như một bên, làm thế nào thường xảy ra tự động?

Biên tập:

Không, nó không hoạt động. Chạy mysqldump -u username -p --all-databases > dump.sqlthủ công không tạo ra lỗi, nhưng không kết xuất information_schema. automysqlbackupkhông đưa ra một lỗi.


Rất tiếc ... từ trang man cho mysqldump: mysqldump không kết xuất cơ sở dữ liệu Information_SCHema. Nếu bạn đặt tên cơ sở dữ liệu đó một cách rõ ràng trên dòng lệnh, mysqldump sẽ âm thầm bỏ qua nó Có vẻ như trang man đã hết hạn (và nó đưa ra cảnh báo) hoặc automysqlbackupđang thực hiện một số kiểm tra bổ sung trên kết xuất information_schema. Không chắc chắn đó là gì, nhưng nó không liên quan đến tài trợ của người dùng.
stickmangumby

1
Đây không phải là vấn đề CẤP. Bạn không cần sao lưu THÔNG TIN_SCHema (Xem: dev.mysql.com/doc/refman/5.0/en/inatures-schema.html )
SmallClanger

1
Để thêm vào những gì SmallClanger đã nói, Information_SCHema là một cơ sở dữ liệu ảo, được xây dựng lại mỗi khi MySQL được khởi động lại, do đó không có lý do gì để sao lưu vì dù sao bạn cũng không thể khôi phục nó.
John Gardeniers

Câu trả lời:


4

Những quyền đó phải là tất cả những gì cần thiết cho mysqldump.

Vì bạn đã cấp LOCK TABLES và nó bị lỗi trên LOCK TABLES, có vẻ như các quyền không nhất quán. Bạn đã chạy FLUSH PRIVILEGESchưa


1

Rất tiếc ... từ trang người đàn ông cho mysqldump:

mysqldump does not dump the INFORMATION_SCHEMA database. If you name that database explicitly on the command line, mysqldump silently ignores it

Có vẻ như trang man đã hết hạn (và nó đưa ra cảnh báo) hoặc automysqlbackupđang thực hiện một số kiểm tra bổ sung trên bãi chứa information_schema.

Không chắc chắn đó là gì, nhưng nó không liên quan đến tài trợ của người dùng.

Biên tập

Đúng, đó là một lỗi trong automysqlbackupphiên bản 2.5.1 (sử dụng MySQL 5.1.41 trong Ubuntu 10.04) - nó cố gắng sao lưu information_schemakhi không nên.

FIX: Thêm information_schemađể đến DBEXCLUDEtrên dòng 76 của kịch bản.


Đây không phải là vấn đề CẤP. Bạn không cần sao lưu THÔNG TIN_SCHema (Xem: dev.mysql.com/doc/refman/5.0/en/inatures-schema.html )
SmallClanger

Để thêm vào những gì SmallClanger đã nói, Information_SCHema là một cơ sở dữ liệu ảo, được xây dựng lại mỗi khi MySQL được khởi động lại, do đó không có lý do gì để sao lưu vì dù sao bạn cũng không thể khôi phục nó.
John Gardeniers
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.