Przypadkowo usunąłem niektóre uprawnienia mojego użytkownika root MySQL, w tym możliwość zmiany tabel. Czy istnieje sposób, aby przywrócić tego użytkownika do jego pierwotnego stanu (ze wszystkimi uprawnieniami)?
UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root';
# MySQL returned an empty result set (i.e. zero rows).
FLUSH PRIVILEGES ;
# MySQL returned an empty result set (i.e. zero rows).
#1045 - Access denied for user 'root'@'localhost' (using password: YES)
GRANT ALL ON *.* TO 'root'@'localhost'
mysql
privileges
mysql-error-1045
Steven
źródło
źródło
Odpowiedzi:
Jeśli
GRANT ALL
to nie zadziała, spróbuj:mysqld
i uruchom ponownie za pomocą--skip-grant-tables
opcji.mysqld
serwerem za pomocą tylko:mysql
(tj. Bez-p
opcji i nazwa użytkownika może nie być wymagana).Wydaj następujące polecenia w kliencie mysql:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
Po tym powinieneś być w stanie uruchomić
GRANT ALL ON *.* TO 'root'@'localhost';
i sprawić, że będzie działać.źródło
skip-grant-tables
do[mysqld]
sekcji pliku konfiguracyjnego mysql, aby uzyskać dostęp do mysql z wiersza poleceń bez hasła.Jeśli
root
przez pomyłkę usunąłeś swojego użytkownika, możesz zrobić jedną rzecz:mysqld_safe --skip-grant-tables &
mysql -u root -p
i naciśnij Enter.use mysql;
Następnie wykonaj to zapytanie:
następnie uruchom ponownie mysqld
EDYCJA: 6 października 2018 r
Na wypadek, gdyby ktoś inny potrzebował tej odpowiedzi, wypróbowałem ją dzisiaj, używając innodb_version 5.6.36-82.0 i 10.1.24-MariaDB i działa, jeśli USUNĄCIE TŁO (bez cudzysłowów, po prostu je usuń):
źródło
mysqld.exe
wbin
folderze, niemysqld_safe.exe
. Co rozumiesz przez „mysqld_safe”?mysqld_safe
, po prostu uruchom normalny plik binarny mysqld:mysqld.exe --skip-grant-tables
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
usuwam również uprawnienia roota i bazy danych, które nie są wyświetlane w konsoli mysql, gdy byłem użytkownikiem root, więc zmieniłem użytkownika
mysql>mysql -u 'userName' -p;
i hasło;po tym poleceniu wszystko pokazuje bazę danych w katalogu głównym.
Dzięki
źródło
Odmówiłem uprawnień roota do wstawiania i ponownego ładowania. Więc po zaktualizowaniu uprawnień FLUSH PRIVILEGES nie działało (z powodu braku uprawnień do przeładowania). Użyłem więc debian-sys-maint user na Ubuntu 16.04, aby przywrócić uprawnienia user.root. Możesz znaleźć hasło do user.debian-sys-maint w tym pliku
źródło
Po prostu zaloguj się z konta roota, używając odpowiedniego hasła, jeśli istnieje, i po prostu uruchom powyższe polecenie dla dowolnego użytkownika.
Na przykład:
źródło
Po prostu wstaw lub zaktualizuj
mysql.user
wartośćY
w uprawnieniach każdej kolumny.źródło
Jeśli używasz WAMP na swoim komputerze lokalnym (mysql wersja 5.7.14) Krok 1: otwórz plik my.ini Krok 2: usuń komentarz z tego wiersza „skip-grant-table”, usuwając średnik. Krok 3: zrestartuj mysql serwer krok 4: uruchom konsolę mySQL krok 5:
Krok 6: Problem rozwiązany !!!!
źródło