2012-04-02 14 views
6

Potrzebuję wykonać kopię zapasową bazy danych, ale gdy próbuję opróżnić tabele przed wykonaniem kopii zapasowej, pojawia się ten błąd? Co to znaczy: przywilej RELOAD?stoły do ​​spłukiwania - odmowa dostępu

Nie możesz znaleźć żadnego przywileju RELOAD w phpmyadmin !?

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

Odpowiedz

1

Prawdopodobnie nie używasz polecenia FLUSH przy użyciu root, ale z ograniczonym użytkownikiem.
Należy uzyskać uprawnienie RELOAD do uruchomienia polecenia FLUSH.
Proszę spojrzeć na here dla uprawnień MySQL.
Tak (na przykład), administrator powinien użyć:

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

oznacza, że ​​mogę to zrobić zamiast tego? '# mysqladmin flush-tables'? – clarkk

+0

@clarkk: jeśli posiadasz uprawnienie 'RELOAD', możesz uruchamiać komendy' mysqladmin' używające 'FLUSH' ... Ale musisz poczekać, aby otrzymać przywilej' RELOAD' ... – Marco

+0

gdzie umieścić hasło w twoim pytanie? – clarkk

15

Dla wyjaśnienia:
RELOAD może być udzielona tylko w skali globalnej, a nie do konkretnej bazy danych. Trzeba użyć *.*

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

Od docs MySQL: GRANT Syntax - Global Privileges

CREATE USER, plik, proces, przeładować, REPLIKACJA KLIENT, REPLIKACJA SLAVE, POKAŻ bazy danych, wyłączenie, i super przywileje są administracyjne i mogą być przyznawane wyłącznie na całym świecie.

+0

dziękuje @codewaggie za udzielenie prawidłowej odpowiedzi. –