2012-12-14 33 views
5

Tôi đang sử dụng mysqlimport để thay thế dữ liệu trong bảng bằng các giá trị từ tệp TSV. Mọi thứ đều hoạt động tốt (nhập dữ liệu bằng tên superuser và mật khẩu DB), vì vậy bây giờ tôi muốn khóa nó xuống để người dùng cơ sở dữ liệu thực hiện việc nhập chỉ có thể ảnh hưởng đến bảng duy nhất mà tôi muốn thay thế.Đặc quyền cơ sở dữ liệu tối thiểu để sử dụng tải dữ liệu infile

Tôi biết tôi cần cấp FILE trên . để sử dụng "LOAD DATA INFILE" (mà mysqlimport kết thúc tốt đẹp), nhưng tôi gặp khó khăn khi tìm tập hợp quyền tối thiểu tôi có thể cấp cho cơ sở dữ liệu.

Tôi đã thử;

grant FILE on *.* to ... 
grant ALL on dbname.tablename to .... 

Nhưng điều đó mang lại cho tôi một lỗi khi tôi chạy mysqlimport;

mysqlimport: Error: Access denied for user ... 

Có ai biết nếu nó có thể để cô lập các cơ sở dữ liệu để chỉ những bảng có liên quan có thể được thay đổi bởi người dùng này, hay tôi phải để cho phép họ truy cập rộng hơn để làm cho mysqlimport có thể?

+0

Bạn biết 'FILE' KHÔNG ở trong' ALL'? Đó là một chút nhầm lẫn. Sau đó, một lần nữa, nếu bạn nhận được một truy cập bị từ chối, nó không thành công trên tên người dùng, máy chủ hoặc mật khẩu trước đó. – Wrikken

+0

có thể trùng lặp của [truy cập bị từ chối cho tải dữ liệu infile trong MySQL] (http://stackoverflow.com/questions/2221335/access-denied-for-load-data-infile-in-mysql) – blo0p3r

Trả lời

1

Để trả lời câu hỏi của riêng tôi, tôi không nghĩ rằng nó có thể sử dụng mysqlimport để thay thế dữ liệu trong một bảng mà không sử dụng một người sử dụng cơ sở dữ liệu có quyền truy cập đến ít nhất là thả và tạo ra bất kỳ bảng trong cơ sở dữ liệu.

mysqlimport sử dụng tên của tập tin bạn đang tải để quyết định bảng dữ liệu đi vào, vì vậy nó có ý nghĩa rằng nó cần để có thể thả và tái bất kỳ bảng, không chỉ là bảng tôi muốn để có thể thay thế.

Đáng tiếc.

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