Konfiguruję nowy serwer i ciągle napotykam ten problem.
Gdy próbuję zalogować się do bazy danych MySQL z użytkownikiem root, pojawia się błąd:
BŁĄD 1698 (28000): Odmowa dostępu dla użytkownika „root” @ „localhost”
Nie ma znaczenia, czy połączę się przez terminal (SSH), przez PHPMyAdmin lub klienta MySQL, np. Navicat. Wszystkie zawodzą.
Zajrzałem do tabeli mysql.user i otrzymałem następujące informacje:
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Jak widać, root powinien mieć dostęp.
Serwer jest dość prosty, ponieważ od jakiegoś czasu próbowałem rozwiązać ten problem.
Działa z Ubuntu 16.04.1 LTS z Apache, MySQL i PHP, dzięki czemu może obsługiwać strony internetowe, a iRedMail 0.9.5-1, aby mógł obsługiwać pocztę.
Zaloguj się do bazy danych MySQL działa dobrze, zanim zainstaluję iRedMail. Próbowałem również, po prostu instaluję iRedMail, ale potem root, również nie działa ...
Gdyby ktoś mógł mi powiedzieć, jak rozwiązać problem z logowaniem do MySQL lub jak zainstalować iRedMail, oprócz istniejącej instalacji MySQL. I tak, wypróbowałem Porady dotyczące instalacji i nie mogę znaleźć tych zmiennych w plikach konfiguracyjnych.
sudo mysql_secure_installation
jest najprostszym sposobem, aby to naprawićOdpowiedzi:
Niektóre systemy, takie jak Ubuntu, mysql domyślnie korzystają z wtyczki UNIX auth_socket .
Zasadniczo oznacza, że: korzystający z niej db_users będą „uwierzytelniani” przez poświadczenia użytkownika systemu. Aby sprawdzić, czy
root
użytkownik jest skonfigurowany w ten sposób, wykonaj następujące czynności:Jak widać w zapytaniu,
root
użytkownik korzysta zauth_socket
wtyczkiIstnieją 2 sposoby rozwiązania tego problemu:
mysql_native_password
wtyczkidb_user
przy sobiesystem_user
(zalecane)Opcja 1:
Opcja 2: (zamień YOUR_SYSTEM_USER na swoją nazwę użytkownika)
Pamiętaj, że jeśli użyjesz opcji # 2, będziesz musiał połączyć się z mysql jako nazwą użytkownika systemu (
mysql -u YOUR_SYSTEM_USER
)Uwaga: W niektórych systemach (np. Debian stretch) wtyczka „auth_socket” nazywa się „unix_socket” , więc odpowiednie polecenie SQL powinno brzmieć:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Aktualizacja: z komentarza @ andy wydaje się, że mysql 8.xx zaktualizował / zastąpił
auth_socket
dlacaching_sha2_password
Nie mam konfiguracji systemu z mysql 8.xx, aby to przetestować, jednak powyższe kroki powinny pomóc w zrozumieniu problemu. Oto odpowiedź:Jedną ze zmian od MySQL 8.0.4 jest to, że nową domyślną wtyczką uwierzytelniającą jest „caching_sha2_password”. Nowy „YOUR_SYSTEM_USER” będzie miał tę wtyczkę uwierzytelniania, a teraz możesz zalogować się z powłoki bash za pomocą „mysql -u YOUR_SYSTEM_USER -p” i podać hasło dla tego użytkownika w wierszu polecenia. Nie ma potrzeby wykonywania kroku „UPDATE user SET plugin”. Aby uzyskać aktualizację domyślnej wtyczki uwierzytelniania 8.0.4, patrz: https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
źródło
sudo gedit /etc/phpmyadmin/config.inc.php
. Potem szukałemAllowNoPassword
i odkomentowałem obie linie, które ją zawierały. Wtedy mogłem zalogować się jako root bez hasła.IDENTIFIED BY ''
nieco prawdopodobnie powinno byćIDENTIFIED BY 'YOUR_PASSWD'
mysqld_safe --skip-grant-tables
to” i to nie działa.sudo mysql -u root -p
mnie nie wpuścisz?Sprawdź tutaj:
NOWA wersja MYSQL robi to w ten sposób.
W nowym my-sql, jeśli hasło zostanie pozostawione puste podczas instalacji, jest ono oparte na
auth_socket
wtyczce.Prawidłowym sposobem jest zalogowanie się do my-sql z
sudo
uprawnieniami.A następnie aktualizując hasło za pomocą:
Po wykonaniu tej czynności
stop and start
serwer mysql.Aby uzyskać szczegółowe informacje, możesz skorzystać z tego linku .
W razie wątpliwości komentuj.
źródło
Miałem ten problem na maszynie Wirtualnej Debian 8, z którą współpracowałem za pośrednictwem Putty na pulpicie Windows 10.
Próbowałem różnych sugestii tutaj, ale nic nie działało i korzystam z MariaDB na hoście Debiana. W końcu okazało się, że nie mogę uruchomić serwera db w trybie awaryjnym, ale nie musiałem i następujące polecenia faktycznie dla mnie działały, tj. Pozwalając nowo utworzonemu użytkownikowi MySql zalogować się na serwerze MySql / MariaDB:
Jeśli powyższe nie do końca działa, wykonaj kroki opisane w powyższym poście zetacu ( zetacu ), a następnie wykonaj moje kroki.
Teraz powinieneś mieć możliwość korzystania ze zdalnego klienta terminala i bezpiecznego logowania do mysql za pomocą polecenia:
* po wyświetleniu monitu wpisz hasło
źródło
Sugerowałbym usunięcie połączenia MySQL -
AKTUALIZACJA - dotyczy wersji Mysql 5.5, jeśli twoja wersja jest inna, zmień odpowiednio pierwszą linię
I zainstaluj ponownie Ale tym razem sam ustaw hasło roota. Zaoszczędzi to wiele wysiłku.
źródło
Po wielu godzinach zmagania się z brakiem rozwiązania, to zadziałało dla mnie, a potem znalazłem film na youtube, w którym jest napisane, że kolumna z hasłami nazywa się teraz uwierzytelnianie. Mogłem więc zmienić hasło w następujący sposób: Najpierw wejdź do mysql z terminala
następnie wewnątrz mysql wpisz cokolwiek po mysql>
w tym momencie jesteś z mysql z powrotem do normalnego miejsca na terminalu. Aby to zadziałało, musisz ponownie uruchomić mysql. dla tego typu:
Zobacz ten link wideo, aby lepiej zrozumieć
źródło
krok 1.
sudo mysql -u root -p
krok 2.
USE mysql;
krok 3.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
Tutaj „admin” to twoje nowe hasło, możesz je zmienić.
krok 4.
exit
Dzięki. Gotowe.
źródło
Nie ma potrzeby sudo
Baza danych jest inicjowana za pomocą 2 kont z wszystkimi uprawnieniami: pierwsze to „root”, które jest niedostępne, a drugie z twoją nazwą użytkownika (sprawdź za pomocą polecenia
whoami
).Aby umożliwić dostęp do konta root, musisz zalogować się przy użyciu swojej nazwy użytkownika
i ręcznie zmień hasło dla roota
Zaloguj się jako „root”
źródło
Pierwszy krok: przejdź do /etc/phpmyadmin/config.inc.php, a następnie odkomentuj wiersze, w których znajduje się AllowNoPassword. Drugi krok: zaloguj się do domyślnego konta mysql
i to wszystko!
źródło
To działało dla mnie:
źródło
Po raz pierwszy napotkałem ten sam problem.
Teraz jest naprawione:
Najpierw skopiuj
/etc/mysql/mysql.conf.d/mysqld.cnf
plik i wklej go do/etc/mysql/my.cnf
.Możesz to zrobić za pomocą polecenia:
Teraz zresetujmy hasło:
Użyj następujących poleceń w swoim terminalu:
Teraz jesteś w konsoli mysql.
Napiszmy kilka zapytań, aby zresetować nasze hasło roota
Teraz możemy wyczyścić
/etc/mysql/my.cng
Otwórz powyższy plik w edytorze i usuń całe linie z pliku.
Następnie uruchommy ponownie mysql:
Teraz użyjmy mysql z nowo utworzonym hasłem:
Na koniec wprowadź nowo utworzone hasło.
źródło
Tutaj znalazłem swoje rozwiązanie po wielu godzinach badań.
Zatrzymaj MySQL
Utwórz katalog usług MySQL.
Zezwól użytkownikowi MySQL na zapis w katalogu usługi.
Uruchom MySQL ręcznie, bez sprawdzania uprawnień i sieci.
Zaloguj się bez hasła.
Aktualizować hasło
Wyłącz MySQL.
Uruchom usługę MySQL normalnie.
źródło
Chcesz uzyskać dostęp do MySQL z użytkownikiem root, ale nie podajesz poprawnego hasła roota.
Jeśli musisz ustawić nowe hasło dla roota , strona MySQL ma świetną dokumentację, jak to zrobić: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Nie pokażę tutaj procesu, ponieważ dokumentacja MySql na powyższy link jest jasna i zwięzła .
źródło
os: Ubuntu18.04
mysql: 5.7
dodaj na
skip-grant-tables
końcu pliku mysqld.cnfcp my.cnf
skip-grant-tables
z my.cnfvalidate_password
pamiętaj, że powinieneś wiedzieć, że popełniłeś błąd przez co? validate_password_policy?
powinieneś zresetować hasło, aby wypełnić polisę lub zmienić polisę.
źródło
Zdarzyło mi się to również. Problem polega na tym, że repozytorium mysql jest już dostarczane z dystrybucją Linuksa. Więc kiedy to zrobisz:
$ sudo apt install mysql-server
instaluje mysql z domyślnego repozytorium, co powoduje ten problem. Aby to pokonać, musisz odinstalować zainstalowany mysql$ sudo apt remove mysql* --purge --auto-remove
Następnie pobierz repozytorium mysql z oficjalnej strony MySQL APT Repo Postępuj zgodnie z ich dokumentacją dotyczącą dodawania repozytorium i instalowania go. To nie stanowi problemu. Ponadto, jak odpowiedział @zetacu, możesz sprawdzić, czy root mysql rzeczywiście używa teraz wtyczki mysql_native_password
źródło
w moim przypadku,
Jestem pewien, że moje hasło było prawidłowe, w przeciwnym razie byłby kod błędu
ERROR 1045 (28000): Access denied for user
więc ponownie loguję się używając sudo,
tym razem zadziałało dla mnie. zobacz dokumenty
a następnie zmień hasło roota,
następnie zrestartuj serwer za pomocą
sudo /etc/init.d/mysql restart
źródło