2012-04-02 58 views
6

Tôi cần phải quay lại cơ sở dữ liệu của mình, nhưng khi cố gắng xóa các bảng trước khi sao lưu, tôi nhận được lỗi này? Điều này có ý nghĩa gì bởi đặc quyền RELOAD?bảng xóa - truy cập bị từ chối

Không thể tìm thấy bất kỳ đặc quyền RELOAD nào trong phpmyadmin !?

Error: Access denied; you need the RELOAD privilege for this operation 
SQL: FLUSH TABLES WITH READ LOCK 

Trả lời

1

Có thể bạn không chạy lệnh FLUSH bằng gốc, nhưng với người dùng bị giới hạn.
Bạn cần được cấp RELOAD đặc quyền để chạy lệnh FLUSH.
Hãy xem here để biết các đặc quyền của MySQL.
Vì vậy (ví dụ) dùng root nên sử dụng:

GRANT RELOAD ON *.* TO 'your_user'@'localhost'; 
+0

điều đó có nghĩa là tôi có thể thực hiện việc này thay thế? '# mysqladmin flush-table'? – clarkk

+0

@clarkk: nếu bạn có đặc quyền 'RELOAD', bạn có thể chạy lệnh' mysqladmin' sử dụng 'FLUSH' ... Nhưng bạn phải đợi để được cấp đặc quyền' RELOAD' ... – Marco

+0

nơi nào tôi đặt mật khẩu vào truy vấn? – clarkk

15

Để làm rõ:
RELOAD chỉ có thể được cấp trên toàn cầu, chứ không phải đến một cơ sở dữ liệu cụ thể. Cần phải sử dụng *.*

GRANT RELOAD ON *.* TO 'your_user'@'localhost'; 

Từ các tài liệu MySQL: GRANT Syntax - Global Privileges

CREATE USER, FILE, QUY TRÌNH, RELOAD, sao chép CLIENT, Replication SLAVE, SHOW CƠ SỞ DỮ LIỆU, SHUTDOWN, và đặc quyền SUPER là hành chính và chỉ có thể được cấp trên toàn cầu.

+0

cảm ơn @codewaggie vì đã cung cấp câu trả lời đúng. –

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