$ ./mysqladmin -u root -p ' redacted '
Wprowadź hasło:
mysqladmin: połączenie z serwerem na „localhost” nie powiodło się błąd:
„Odmowa dostępu dla użytkownika„ root ”@„ localhost ”(przy użyciu hasła: TAK)”
Jak mogę to naprawić?
mysql
sql
database
database-connection
Surowe Trivedi
źródło
źródło
~/.my.cnf
plik.-p
opcję samą, a mysql poprosi o podanie hasła.Odpowiedzi:
/etc/my.cnf
lub/etc/mysql/my.cnf
, w zależności od dystrybucji.skip-grant-tables
poniżej[mysqld]
mysql -u root -p
mysql> flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
mysql -u root -p
źródło
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'' at line 1
set PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
Zrobiłem to po kroku 5. Oto, jak wyglądało moje wyjście z wiersza polecenia:MariaDB [(none)]> MariaDB [(none)]> set PASSWORD FOR 'root'@'localhost' = PASSWORD('root'); Query OK, 0 rows affected (0.00 sec)
sudo systemctl restart mariadb
Wszystkie znalezione przeze mnie rozwiązania były znacznie bardziej złożone niż to konieczne i żadne z nich nie działało dla mnie. Oto rozwiązanie, które rozwiązało mój problem. Nie trzeba restartować mysqld ani uruchamiać go ze specjalnymi uprawnieniami.
Za pomocą jednego zapytania zmieniamy auth_plugin na mysql_native_password i ustawiamy hasło roota na root (możesz je zmienić w zapytaniu)
Teraz powinieneś być w stanie zalogować się przy użyciu roota. Więcej informacji można znaleźć w dokumentacji mysql
(zamknij konsolę mysql za pomocą Ctrl + D lub wpisując polecenie exit )
źródło
Próbowałem wielu kroków, aby rozwiązać ten problem. Istnieje tak wiele źródeł możliwych rozwiązań tego problemu, że trudno jest oddzielić sens od bzdur. W końcu znalazłem dobre rozwiązanie tutaj :
Krok 1: Zidentyfikuj wersję bazy danych
Zobaczysz takie dane wyjściowe w MySQL:
Lub dane wyjściowe takie jak dla MariaDB:
Zanotuj, która baza danych i którą wersję uruchomisz, ponieważ będziesz ich później używać. Następnie musisz zatrzymać bazę danych, aby uzyskać dostęp do niej ręcznie.
Krok 2: Zatrzymanie serwera bazy danych
Aby zmienić hasło roota, musisz wcześniej zamknąć serwer bazy danych.
Możesz to zrobić dla MySQL za pomocą:
A dla MariaDB z:
Krok 3: Ponowne uruchomienie serwera bazy danych bez sprawdzania uprawnień
Jeśli uruchomisz MySQL i MariaDB bez ładowania informacji o uprawnieniach użytkownika, pozwoli ci to uzyskać dostęp do wiersza poleceń bazy danych z uprawnieniami roota bez podawania hasła. Pozwoli ci to uzyskać dostęp do bazy danych, nie wiedząc o tym.
Aby to zrobić, musisz zatrzymać ładowanie przez bazę danych tabel grantu, które przechowują informacje o uprawnieniach użytkownika. Ponieważ jest to trochę ryzykowne z punktu widzenia bezpieczeństwa, należy również pominąć sieć, aby uniemożliwić innym klientom nawiązywanie połączeń.
Uruchom bazę danych bez ładowania tabel grantu lub włączania sieci:
Znak ampersand na końcu tego polecenia spowoduje, że proces ten będzie działał w tle, dzięki czemu będziesz mógł nadal korzystać z terminala.
Teraz możesz połączyć się z bazą danych jako użytkownik root, który nie powinien prosić o hasło.
Zamiast tego natychmiast zobaczysz monit powłoki bazy danych.
Monit MySQL
Podpowiedź MariaDB
Teraz, gdy masz dostęp do konta root, możesz zmienić hasło roota.
Krok 4: Zmiana hasła roota
Teraz możemy zmienić hasło roota.
W przypadku MySQL 5.7.6 i nowszych, a także MariaDB 10.1.20 i nowszych , użyj następującego polecenia:
W przypadku MySQL 5.7.5 i starszych, a także MariaDB 10.1.20 i starszych , użyj:
Pamiętaj, aby zastąpić
new_password
je nowym, wybranym hasłem.Uwaga: jeśli
ALTER USER
polecenie nie działa, zwykle oznacza większy problem. Możesz jednak spróbowaćUPDATE ... SET
zresetować hasło roota.[WAŻNE] To konkretny wiersz, który naprawił mój konkretny problem:
Pamiętaj, aby po tym ponownie załadować tabele grantów.
W obu przypadkach powinieneś zobaczyć potwierdzenie, że polecenie zostało wykonane pomyślnie.
Hasło zostało zmienione, dzięki czemu można teraz zatrzymać ręczną instancję serwera bazy danych i zrestartować ją tak, jak wcześniej.
Krok 5: Uruchom ponownie serwer bazy danych normalnie
Samouczek zawiera kilka dalszych kroków w celu zrestartowania bazy danych, ale użyłem tylko tego:
W przypadku MySQL użyj: $ sudo systemctl start mysql
W przypadku MariaDB użyj:
Teraz możesz potwierdzić, że nowe hasło zostało poprawnie zastosowane, uruchamiając:
Polecenie powinno teraz wyświetlać monit o podanie nowego hasła. Wpisz go, a powinieneś uzyskać dostęp do monitu bazy danych zgodnie z oczekiwaniami.
Wniosek
Masz teraz dostęp administracyjny do przywróconego serwera MySQL lub MariaDB. Upewnij się, że nowe hasło roota jest silne i bezpieczne i przechowuj je w bezpiecznym miejscu.
źródło
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
uratowała mi życie!Żadna z powyższych odpowiedzi nie pomogła mi z tym problemem, więc oto rozwiązanie, które znalazłem .
Odpowiednia część:
źródło
Dla użytkowników Ubuntu / Debian
( może działać na innych dystrybucjach, szczególnie tych opartych na Debianie)
Uruchom następujące polecenie, aby połączyć się jako
root
(bez hasła)Jeśli nie chcesz dodawać za
--defaults-file
każdym razem, gdy chcesz się połączyć jakoroot
, możesz skopiować/etc/mysql/debian.cnf
do katalogu domowego:i wtedy:
źródło
Po wypróbowaniu wszystkich innych odpowiedzi, to w końcu dla mnie zadziałało
Znalazłem odpowiedź w tym poście: https://medium.com/@chiragpatel_52497/solved-error-access-denied-for-user-root-localhost-of-mysql-programming-school-6e3611838d06
źródło
skip-grant-table
(my.conf lub wmysql
poleceniu) nie działały. Mogłem uzyskać dostęp do konta usługi ( askubuntu.com/a/120769/169836 ), aleUPDATE mysql.user SET Password=PASSWORD('') WHERE User='root';
nie działałem . Tylko wtedy, gdy korzystasz z wtyczki działało. Dzięki ~Dla nowych użytkowników Linuksa może to być trudne zadanie. Pozwól, że zaktualizuję to za pomocą mysql 8 (najnowsza dostępna wersja to 8.0.12 na 12 września 2018)
Otóż to.
źródło
W swoim środowisku roboczym MySQL możesz przejść do lewego paska bocznego, w obszarze Zarządzanie wybierz „Użytkownicy i uprawnienia”, kliknij root w Kontach użytkowników, w prawej sekcji kliknij kartę „Limity konta”, aby zwiększyć maksymalną liczbę zapytań, aktualizacji itp., I następnie kliknij kartę „Role administracyjne” i zaznacz pola, aby dać dostęp do konta. Mam nadzieję, że to pomaga!
źródło
Zrobiłem to, aby ustawić hasło roota w początkowej konfiguracji MySQL w OSx. Otwórz terminal.
Zamknij terminal i otwórz nowy terminal. W systemie Linux działają następujące ustawienia, aby ustawić hasło roota.
(sudo mysqld_safe --skip-grant-tables: To nie działało dla mnie po raz pierwszy. Ale druga próba, zakończyło się sukcesem.)
Następnie zaloguj się do MySQL
Teraz zmień hasło:
Uruchom ponownie MySQL:
źródło
W moim przypadku w Debianie 10 błąd
został rozwiązany przez (GOOD WAY)
ZŁA DROGA:
źródło
Ugh- nic dla mnie nie działało! Mam maszynę CentOS 7.4 z systemem mariadb 5.5.64.
Musiałem to zrobić zaraz po instalacji mariadbu od yum;
mysql_secure_installation
Przeprowadzi cię przez szereg etapów, w tym „Ustaw hasło roota? [Y / n]”. Po prostu powiedz „y” i podaj hasło. Odpowiedz na inne pytania, jak chcesz.Następnie możesz uzyskać hasło, używając
Przetrwa
Klucz
Następnie sprawdziłem
/bin/mysql_secure_installation
kod źródłowy, aby dowiedzieć się, jak magicznie można było zmienić hasło roota i żadna z pozostałych odpowiedzi tutaj nie mogła. Bit importu to:... Mówi
SET Password=...
i nieSET authentication_string = PASSWORD...
. Tak więc właściwa procedura dla tej wersji (5.5.64) to:W wierszu polecenia mysql>:
zabij działającego mysqld_safe. uruchom ponownie mariadb. Zaloguj się jako root:
mysql -u -p
. Użyj swojego nowego hasła.Jeśli chcesz, możesz ustawić wszystkie hasła roota jednocześnie. Myślę, że to jest mądre:
Spowoduje to wykonanie aktualizacji wszystkich haseł root: tj. Dla „localhost”, „127.0.0.1” i „:: 1”
W przyszłości, kiedy przejdę do RHEL8 lub co tam masz, postaram się pamiętać, aby sprawdzić / bin / mysql_secure_installation i zobaczyć, jak to zrobili chłopaki, którzy skonfigurowali mariadb dla tego systemu operacyjnego.
źródło
Jeśli jesteś podobny do mnie i wszystkie powyższe sugestie nie powiodły się, przejdź do odinstalowania wszystkich wersji mysql na komputerze, wyszukaj wszystkie pozostałe pliki mysql za pomocą tego polecenia
sudo find / -name "mysql"
irm -rf
każdego pliku lub katalogu z dołączoną do niego nazwą mysql (należy pominąć powiązane pliki do bibliotek języków programowania). Teraz zainstaluj nową wersję MySQL i ciesz się. Uwaga: utracisz wszystkie dane, więc najpierw zważ swoje opcje.źródło
Może się to zdarzyć, jeśli nie masz wystarczających uprawnień. Wpisz
su
hasło roota i spróbuj ponownie.źródło
Okej, wiem, że to stary wątek, ale jeśli trafiłeś na tę stronę przez Google tak jak ja i żadne z powyższych rozwiązań nie zadziałało, to błąd okazał się 100% głupotą po mojej stronie. Nie podłączyłem się do serwera. Po połączeniu wszystko płynęło płynnie.
W przypadku, gdy pomaga to poznać moją konfigurację, używam Sequel Pro i próbuję połączyć się z nim za pomocą Node przy użyciu pakietu NPM, mysql. Nie sądziłem, że muszę się połączyć (poza uruchomieniem Sequel Pro), ponieważ robiłem to już z mojej aplikacji.
źródło
Rozwiązanie: poddaj się!
Wysłuchaj mnie, spędziłem około dwóch dni próbując sprawić, że MySQL nie przyniosło rezultatu, zawsze utknąłem w błędach uprawnień, z których żaden nie został naprawiony przez odpowiedzi w tym wątku. Doszło do tego, że pomyślałem, że jeśli będę kontynuować, oszaleję.
Z powodu cierpliwości, aby działało, wysłałem polecenie instalacji SQLite, używając tylko 450 KB i działało idealnie od samego początku.
Jeśli nie masz cierpliwości świętego, skorzystaj z SQLite i zaoszczędź dużo czasu, wysiłku, bólu i miejsca do przechowywania ..!
źródło