BŁĄD 1045 (28000): Odmowa dostępu dla użytkownika „root” @ „localhost” (przy użyciu hasła: TAK)

184

Jestem inżynierem elektrykiem, który bawi się głównie systemami zasilania zamiast programowania. Ostatnio postępuję zgodnie z instrukcją instalacji pakietu oprogramowania na Ubuntu. Właściwie to nie mam żadnej wiedzy mySQL. Wykonałem następujące instalacje na moim Ubuntu.

sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp

Więc robię

me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

Skończyło się na następującym komunikacie o błędzie.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Jak mogę to naprawić i kontynuować?

Hazard Sibbs
źródło
1
To nie wydaje mi się ściśle związane z programowaniem . Oflagowałem go do migracji do SuperUser
Uli Köhler
Przyszli goście również nie zapomnij sprawdzić kilku przyczyn wyjaśnionych tutaj: dev.mysql.com/doc/refman/8.0/en/problems-connecting.html
aderchox

Odpowiedzi:

155

Uwaga: w przypadku MySQL 5.7+ proszę zobaczyć odpowiedź od @Lahiru na to pytanie. Zawiera więcej aktualnych informacji.

Dla MySQL <5.7:

Domyślne hasło roota jest puste (tzn. Pusty ciąg), a nie root. Możesz więc zalogować się jako:

mysql -u root

Powinieneś oczywiście zmienić swoje hasło roota po instalacji

mysqladmin -u root password [newpassword]

W większości przypadków powinieneś również skonfigurować indywidualne konta użytkowników, zanim zaczniesz intensywnie pracować z DB.

Mike Brant
źródło
5
@FarticlePilter -pFlaga określa hasło, więc po zmianie hasła roota zrobiłbyś to mysql -u root -p[newpassword]. < [filename]Jest za pomocą wejścia std wykonać plik SQL na ścieżce podanej przez poświadczeń użytkownika, które świadczą.
Mike Brant
27
Próbowałem zgodnie z zaleceniami mysqladmin -u root password abc1234, ale zrozumiałem mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'. Dziękuję bardzo!
Sibbs Gambling
2
@Kanagaroo w tym pytaniu OP twierdzi, że właśnie zainstalowali MySQL po raz pierwszy, a następnie próbowali uzyskać dostęp za pośrednictwem klienta linii poleceń MySQL. To brzmi jak pierwszy dostęp do mnie.
Mike Brant,
18
W rzeczywistości dla serwera społeczności mysql 5.7 domyślne hasło roota jest generowane losowo podczas instalacji. Sprawdź na swoim /var/log/mysqld.log linię, która mówi o „tymczasowym haśle”. Oszczędza godziny bałaganu.
Phil
1
@BraianMellor To rozwiązuje problem dla MySQL <5.7, ponieważ domyślne (poinstalacyjne) hasło roota na Ubuntu jest puste (bez hasła), gdzie w pierwotnym pytaniu plakat próbował użyć root / root. Pytanie nie dotyczyło utraconego hasła, zmiany hasła itp. W przypadku nowszych wersji MySQL inna odpowiedź, na którą się powołałem, jest poprawna, ponieważ użytkownik musi zajrzeć do dzienników błędów, aby zobaczyć losowo wygenerowane hasło roota.
Mike Brant,
114

Byłem w stanie rozwiązać ten problem, wykonując to oświadczenie

sudo dpkg-reconfigure mysql-server-5.5

Co zmieni hasło roota.

Divz
źródło
10
Właśnie tego potrzebowałem ... ale nie każdy ma wersję 5.5 serwera. użyj, dpkg --get-selections | grep sqlaby uzyskać swoją wersję
Balmipour,
1
@Balmipour, co powinno być równoważnym poleceniem do sprawdzania wersji SQL w Rhel 6.x
PrathamN
1
@Divz jaka powinna być komenda rekonfiguracji serwera mysql w Rhel / centos
PrathamN
@PrathamN Nigdy nie korzystałem z red had, ale przeglądanie „wersji pakietów red hat” daje mi takie polecenia: yum list installeddodaj | grep sqldo filtrowania tylko pakietów SQL.
Balmipour,
1
Kiedy uruchomić tego polecenia w systemie Mac OS X, otrzymuję ten błąd: sudo: dpkg-reconfigure: command not found. Jakieś sugestie?
mOna
90

Musisz zresetować hasło! kroki dla Mac OSX (przetestowane i działające) i Ubuntu

Przestań używać MySQL

sudo service mysql stop

lub

$ sudo /usr/local/mysql/support-files/mysql.server stop

Uruchom w trybie awaryjnym:

$ sudo mysqld_safe --skip-grant-tables --skip-networking

(powyżej linii jest całe polecenie)

Będzie to ciągłe polecenie do zakończenia procesu, więc otwórz kolejne okno powłoki / terminala, zaloguj się bez hasła:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Zgodnie z komentarzem @ IberoMedia, w przypadku nowszych wersji MySQL pole nosi nazwę authentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

Uruchom MySQL przy użyciu:

sudo service mysql start

lub

sudo /usr/local/mysql/support-files/mysql.server start

twoje nowe hasło to „hasło”.

tk_
źródło
3
Proszę, NIE w ten sposób! Odpowiedź Divza jest bezpieczniejsza. Cytując dokument na temat --skip-grant-tables: Pozwala to każdemu połączyć się bez hasła i ze wszystkimi uprawnieniami [...] Ponieważ jest to niepewne, [...] użyj --skip-grant-tablesw połączeniu z, --skip-networkingaby uniemożliwić zdalnym klientom nawiązywanie połączenia. och, a także ten nie działał dla mnie. Dlatego tu przybyłem: p
Balmipour,
1
Jeśli pójdziesz tą drogą , tak. Nie działało to dla mnie, a podążanie za odpowiedzią @ Divz wydaje mi się o wiele łatwiejsze. W każdym razie --sugerowałbym, dpkg --get-selections | grep mysql-server-aby uzyskać dokładną wersję MySQL, a następnie przejść do sudo dpkg-rekonfigurować mysql-server-5.x (wymienić 5 .x z wersją serwera, btw). Z taką precyzją skomentowałem odpowiedź @ Divza, ale jest ona maskowana przez kilka komentarzy „dzięki”.
Balmipour,
4
aktualizuj zestaw użytkowników uwierzytelnianie_ciąga = hasło („1111”) gdzie użytkownik = „root”;
Dejell,
2
To faktycznie działało ... inne rozwiązania nadal dawały ten sam błąd.
eddy147
2
Od czasu MySQL 5.7.6 zmieniono nazwę kolumny hasła na „ string_
IberoMedia
55

Wiem, że to stare pytanie, ale myślę, że to może komuś pomóc. Ostatnio napotkałem ten sam problem, ale w moim przypadku pamiętam moje hasło całkiem dobrze, ale ciągle pojawiał się ten sam błąd. Próbowałem tak wielu rozwiązań, ale wciąż żadne nie pomogło, a potem spróbowałem tego

mysql -u root -p 

po czym prosi o podanie takiego hasła

Enter password: 

a następnie wpisałem hasło, którego użyłem. To wszystko

XY-JOE
źródło
3
Zabawne, że pomogło to po wielu dniach badań.
girish_vr
Miło wiedzieć @girish_vr
XY-JOE
Pracował dla mnie! Moja wersja serwera mysql to: Wersja serwera: 8.0.13 Serwer społeczności MySQL - GPL
kaspiotr
Ten pomógł, co jest tak głupie ze strony MySQL, że wciąż nie mogę w to uwierzyć.
wscourge
39

Przy pierwszym uruchomieniu serwera dzieje się tak, ponieważ katalog danych serwera jest pusty:

  • Serwer został zainicjowany.
  • Pliki SSL i certyfikaty są generowane w katalogu danych.
  • Wtyczka validate_password jest zainstalowana i włączona.
  • Utworzono konto administratora „root” @ „localhost”. Hasło administratora jest ustawione i przechowywane w pliku dziennika błędów.

Aby go ujawnić, użyj następującego polecenia:

shell> sudo grep 'temporary password' /var/log/mysqld.log

Zmień hasło roota jak najszybciej, logując się za pomocą wygenerowanego hasła tymczasowego i ustaw niestandardowe hasło dla konta administratora:

shell> mysql -u root -p #Login to root user with some password

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
Lahiru
źródło
16
Wyglądało to obiecująco, ale nie działa dla mnie. Kiedy biegnę sudo grep 'temporary password' /var/log/mysqld.log, dostaję/var/log/mysqld.log: No such file or directory
Eric Hepperle - CodeSlayer2010 20.04.17
4
Spróbować sudo grep 'temporary password' /var/log/mysql/error.log. Rozwiązanie @Lahiru działało dla mnie.
artemisian
17
Próbowałem sudo grep „tymczasowe hasło” /var/log/mysql/error.log, ale nic nie zwraca.
uczeń
2
Spróbować shell> sudo grep 'password' /var/log/mysql/error.log. Pracowałem dla mnie, ale dostaję: root @ localhost jest tworzony z pustym hasłem! Rozważ wyłączenie opcji --initialize-niepewne. Moja wersja mysql to: Ver 8.0.13 dla Linux na x86_64 (MySQL Community Server - GPL)
kaspiotr
1
@EnginYilmaz dlaczego sugerujesz polecenie mysql, gdy problemem jest to, że mysql nie jest nawet dostępny?
R-obert
34

jeśli problem nadal występuje, spróbuj wymusić zmianę przepustki

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Skonfiguruj nowe hasło użytkownika root MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Zatrzymaj serwer MySQL:

/etc/init.d/mysql stop

Uruchom serwer MySQL i przetestuj go:

mysql -u root -p
Yasin Hassanien
źródło
1
Dziękuję Ci. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)nękał też mój serwer. „mysqld_safe” również nie powiodło się, dopóki nie zrobiłem „killall mysqld” PO twoim kroku 1.
Marcos
Proszę, NIE w ten sposób! Odpowiedź Divza jest bezpieczniejsza. Cytując dokument na temat --skip-grant-tables: Pozwala to każdemu połączyć się bez hasła i ze wszystkimi uprawnieniami [...] Ponieważ jest to niepewne, [...] użyj --skip-grant-tablesw połączeniu z, --skip-networkingaby uniemożliwić zdalnym klientom nawiązywanie połączenia. och, a także ten nie działał dla mnie. Dlatego tu przybyłem: p
Balmipour,
2
Daje mi to: ERROR 1054 (42S22): Nieznana kolumna „hasło” na „liście pól”
MD. Mohiuddin Ahmed,
Sprawdź odpowiedź @Anshu, to bezpieczniejszy sposób radzenia sobie z tym
Mugoma J. Okomba
1
@ MD.MohiuddinAhmed Musisz używać nowszej wersji serwera mysql. Zobacz tę odpowiedź: stackoverflow.com/a/31122246/6242649
Udayraj Deshmukh
32

Dzieje się tak, gdy brakuje hasła.

Kroki zmiany hasła, gdy zapomnisz:

  1. Zatrzymaj serwer MySQL (w systemie Linux):

    sudo systemctl stop mysql
  2. Uruchom bazę danych bez ładowania tabel grantu lub włączania sieci:

    sudo mysqld_safe --skip-grant-tables --skip-networking &

    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 używać terminala i uruchamiać #mysql -u root, nie będzie pytał o hasło.

    Jeśli pojawi się błąd jak poniżej:

    2018-02-12T08: 57: 39.826071Z Katalog mysqld_safe „/ var / run / mysqld” dla
    pliku gniazda UNIX nie istnieje. mysql -u root ERROR 2002 (HY000): Nie można połączyć się z lokalnym serwerem MySQL przez gniazdo
    „/var/run/mysqld/mysqld.sock” (2) [1] + Exit 1

  3. Utwórz katalog usług MySQL.

    sudo mkdir /var/run/mysqld

    Zezwól użytkownikowi MySQL na zapis w katalogu usługi.

    sudo chown mysql: /var/run/mysqld
  4. Uruchom to samo polecenie w kroku 2, aby uruchomić mysql w tle.

  5. Uruchom mysql -u root, otrzymasz konsolę mysql bez podawania hasła.

    Uruchom te polecenia

    FLUSH PRIVILEGES;

    Dla MySQL 5.7.6 i nowszych

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

    Dla MySQL 5.7.5 i starszych

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

    Jeśli polecenie ALTER USER nie działa, użyj:

    UPDATE mysql.user SET authentication_string = PASSWORD('new_password')     WHERE User = 'root' AND Host = 'localhost';

Teraz wyjdź

  1. Aby zatrzymać instancję uruchomioną ręcznie

    sudo kill `cat /var/run/mysqld/mysqld.pid`
  2. Uruchom ponownie mysql

    sudo systemctl start mysql
Sameer Kumar Choudhary
źródło
2
W moim przypadku muszę zmodyfikować Krok 6 jakosudo kill `sudo cat /var/run/mysqld/mysqld.pid`
kolunar
1
Ten działał dla mnie. W kroku 5 wykonaj: 1. użyj USER 2. Aby zmienić hasło, użyj -> zaktualizuj użytkownika ustaw uwierzytelnianie ciąg = HASŁO („hasło”), gdzie Użytkownik = „root”;
Bikram
1
To najlepsze rozwiązanie, jakie mogłem się dowiedzieć. Korzystanie z „5.7.26 MySQL Community Server (GPL)” na macOS Mojave na modelu MBP '15. Musiałem zatrzymać MySQL od Preferencji systemowych, a następnie wykonałem krok 2 i krok 5. A potem musiałem zabić proces MySQL, patrząc na PID za pomocą ps -ef | grep mysql.
cspider
12

Natknąłem się na ten irytujący problem i znalazłem wiele odpowiedzi, które nie zadziałały. Najlepszym rozwiązaniem, jakie napotkałem, było całkowite odinstalowanie mysql i jego ponowna instalacja. Podczas ponownej instalacji ustawiłeś hasło roota, co rozwiązało problem.


sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

Znalazłem ten kod gdzie indziej, więc nie biorę za niego uznania. Ale to działa. Aby zainstalować mysql po odinstalowaniu, myślę, że cyfrowy ocean ma dobry samouczek. Sprawdź w tym mój cel.
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

JamesD
źródło
12

Korzystam z Ubuntu-16.04: zainstalowany mysql - 5.7. Miałem ten sam problem: odmowa logowania dla użytkownika root.

Próbowałem poniższych kroków:

  1. dpkg --get-selections | grep mysql (aby uzyskać wersję mysql).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Bez -p to nie monituje o podanie hasła. Po wejściu możesz utworzyć użytkownika z hasłem, wykonując następujące czynności:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

Wyjdź z katalogu głównego i zaloguj się z podanego powyżej adresu.

mysql -u <your_new_username> -p

Z jakiegoś powodu nadal pisanie mysql nie działa. W OGÓLE. Sugeruję, aby był to nawyk używania mysql -u <name> -p.

Nikhil Rushmith
źródło
8

wystarczy wejść do terminalu

mysql -u root -p. niż poprosi o hasło

Vahap Gencdal
źródło
8

Jeśli żadna z pozostałych odpowiedzi nie działa dla Ciebie i wystąpił ten błąd:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

Wykonaj poniższe polecenia krok po kroku, aż zresetujesz hasło:

# Stop Your Server First
sudo service mysql stop

# Make MySQL service directory.
sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -u root mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its host

FLUSH PRIVILEGES;
EXIT;

#kill mysqld_safe process
sudo service mysql restart

#Now you can use your new password to login to your Server
mysql -u root -p

#take note for remote access you should create a remote user and then grant all privileges to that remote user
Mehdi
źródło
To jest poprawna odpowiedź również dla mysql 5.7 w Ubuntu 18.04 LTS. Dzięki
Dhiraj
Dla wszystkich zdalnych adresów: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf -> adres powiązania = 0.0.0.0
Mehdi
7

Zainstalowałem MySQL jako użytkownik root ( $SUDO) i dostałem ten sam problem.
Oto jak to naprawiłem-

  1. $ sudo cat /etc/mysql/debian.cnf

Spowoduje to wyświetlenie szczegółów jako-

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

Powyżej widzimy hasło właśnie mamy zamiar używać(GUx0RblkD3sPhHL5) , że w prompt-

  1. mysql -u debian-sys-maint -p Enter password:
    teraz podaj hasło ( GUx0RblkD3sPhHL5 ).

  2. Teraz exitz MySQL i zaloguj się ponownie jako-

    mysql -u root -p Enter password:
    Teraz podaj nowe hasło. To wszystko, mamy nowe hasło do dalszych zastosowań.

To zadziałało dla mnie, mam nadzieję, że ci też pomogę!

S.Yadav
źródło
6

Przeczytaj oficjalną dokumentację: Mysql: Jak zresetować hasło roota

Jeśli masz dostęp do terminala:

MySQL 5.7.6 i nowsze wersje:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 i wcześniejsze:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
d.danailov
źródło
1
Daje: BŁĄD 1131 (42000): Używasz MySQL jako anonimowego użytkownika i anonimowi użytkownicy nie mogą zmieniać haseł
MD. Mohiuddin Ahmed,
1
To normalne. Twój użytkownik jest anonimowy. Musisz wykonać> mysql -u {your_username}
d.danailov,
3

Używam mysql-5.7.12-osx10.11-x86_64.dmg w Mac OSX

Proces instalacji automatycznie ustawia tymczasowe hasło dla użytkownika root. Powinieneś zapisać hasło. Hasła nie można odzyskać.

Postępuj zgodnie z instrukcją

  1. Iść do cd /usr/local/mysql/bin/
  2. Wprowadź tymczasowe hasło (które mogłoby wyglądać mniej więcej tak: „tsO07JF1 => 3”)
  3. Powinien zostać wyświetlony monit mysql>.
  4. Uruchom, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');jeśli chcesz ustawić hasło: „root”, wówczas polecenie brzmi:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. Biegać ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. Biegać exit
  7. Biegać ./mysql -u root -p
  8. Wpisz swoje hasło W moim przypadku wpisałbym „root” (bez cudzysłowu)
  9. To wszystko.

Dla wygody powinieneś dodać "/usr/local/mysql/bin"do swojej ŚCIEŻKI

Teraz z dowolnego miejsca możesz wpisać, ./mysql -u root -pa następnie wpisać hasło, a pojawi się monit mysql>.

Mam nadzieję, że to pomoże.

tausiq
źródło
3

Odpowiedź może brzmieć głupio, ale po marnowaniu godzin w ten sposób udało mi się ją uruchomić

mysql -u root -p

Dostałem komunikat o błędzie

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Mimo że wpisałem poprawne hasło (hasło tymczasowe, które dostajesz przy pierwszej instalacji mysql)

Mam rację, gdy wpisałem hasło, gdy hasło hasła migało

Amit Kumar
źródło
2

jeśli problem nadal występuje, spróbuj wymusić zmianę przepustki

Zatrzymaj serwer MySQL (w systemie Linux):

/etc/init.d/mysql stop

Zatrzymaj serwer MySQL (w systemie Mac OS X):

mysql.server stop

Uruchom demona mysqld_safe za pomocą --skip-grant-tables

mysqld_safe --skip-grant-tables &
mysql -u root

Skonfiguruj nowe hasło użytkownika root MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Zatrzymaj serwer MySQL (w systemie Linux):

/etc/init.d/mysql stop

Zatrzymaj serwer MySQL (w systemie Mac OS X):

mysql.server stop

Uruchom usługę serwera MySQL i przetestuj, aby zalogować się przez root:

mysql -u root -p
Max Yao
źródło
1

Domyślne hasło będzie puste, więc musisz zmienić hasło, wykonując poniższe czynności.

połącz się z mysql

root # mysql

Użyj mysql

mysql> update user set password = PASSWORD ('root') gdzie User = 'root'; Na koniec załaduj ponownie uprawnienia:

mysql> uprawnienia do opróżniania; mysql> quit

Rizwan Basheer
źródło
1

Tylko jedna linia i to rozwiązało mój problem.

sudo dpkg-reconfigure mysql-server-5.5
Satyendra Sahani
źródło
1

W Ubuntu 16.04 (MySQL wersja 5.7.13) udało mi się rozwiązać problem, wykonując poniższe czynności:

  1. Postępuj zgodnie z instrukcjami z sekcji B.5.3.2.2 Resetowanie hasła roota: Podręcznik użytkownika systemów uniksowych i systemów uniksowych MySQL 5.7

  2. Kiedy próbowałem #sudo mysqld_safe --init-file = / home / me / mysql-init i nie powiodło się. Błąd występował w /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [Uwaga] Rozpoczęto wykonywanie pliku init_file / home / me / mysql / mysql-init '. 2016-08-10T11: 41: 20.422070Z 0 [BŁĄD] / usr / sbin / mysqld: Nie znaleziono pliku / home / me / mysql / mysql-init '(Errcode: 13 - Odmowa dostępu) 2016-08-10T11: 41: 20.422096Z 0 [BŁĄD] Przerwanie

Uprawnienie do pliku mysql-init nie stanowiło problemu, trzeba edytować pozwolenie Apparmor

  1. Edytuj przez #sudo vi /etc/apparmor.d/usr.sbin.mysqld

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
  2. Przeładuj #sudo /etc/init.d/apparmor

  3. Uruchom ponownie mysqld_safe, spróbuj wykonać krok 2 powyżej. Sprawdź /var/log/mysql/error.log, aby upewnić się, że nie wystąpił błąd i mysqld został pomyślnie uruchomiony

  4. Uruchom #mysql -u root -p

    Wprowadź hasło:

Wprowadź hasło określone w mysql-init. Powinieneś być teraz w stanie zalogować się jako root.

  1. Zamknij mysqld_safe przez #sudo mysqladmin -u root -p zamknij

  2. Uruchom mysqld normalnie przez #sudo systemctl start mysql

codegen
źródło
1

Jeśli masz MySQL jako część obrazu Docker (powiedzmy na porcie 6606) i instalacji Ubuntu (na porcie 3306) określenie portu jest niewystarczające:

mysql -u root -p -P 6606

rzuci:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

ponieważ domyślnie próbuje się połączyć z hostem lokalnym, określenie lokalnego adresu IP rozwiązuje problem:

mysql -u root -p -P 6606 -h 127.0.0.1
Botris
źródło
0

W najnowszych wersjach MySQL nie ma tego passwordw mysql.usertabeli.

Musisz więc wykonać ALTER USER. Umieść to polecenie w jednym wierszu w pliku.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

I uruchom go jako plik init (jako użytkownik root lub mysql)

mysqld_safe --init-file=/home/me/mysql-init &

Serwer MySQL musi zostać zatrzymany, aby uruchomić mysqld_safe.

Może również występować problem z uprawnieniami Apparmor do ładowania tego pliku init. Przeczytaj więcej tutaj https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql

Vladimir Kovalchuk
źródło
0

Jeśli jeszcze nie ustawiłeś hasła, a następnie uruchom mysql -uroot, działa dla mnie.

ahbon
źródło
0

Na Macu, jeśli masz problem z zalogowaniem się przy użyciu pierwszego hasła podanego podczas instalacji, być może możesz po prostu zabić proces mysql, a następnie spróbować.

Więc: 1- uruchom następujące polecenie, aby znaleźć PID mysql:

ps -aef | grep mysql | grep -v grep

2- zabić proces:

kill -15 [process id] 

Następnie możesz zalogować się przy użyciu początkowego hasła za pomocą tego polecenia:

mysql -uroot -p

Które proszą o podanie hasła. Wystarczy wpisać początkowe hasło.

Maryam Zakani
źródło
0

Miałem podobny problem:

BŁĄD 1045 (28000): Odmowa dostępu dla użytkownika „root” @ „localhost” (przy użyciu hasła: NIE)

Ale w moim przypadku przyczyna była naprawdę głupia. Skopiowałem polecenie z dokumentu Word, a problem polegał na tym, że łącznik nie miał kodu 2D ASCII, ale Unicode E28093.

Zła droga:

mysql -u root pxxxx

Właściwa droga:

mysql -u root -pxxxx

Oba wyglądają tak samo, ale nie są takie same (spróbuj, skopiuj i wklej zastępując hasło).

W obliczu tego typu błędu zalecana jest próba wpisania polecenia zamiast kopiowania i wklejania.

cesargastonec
źródło
0

Próbowałem z poprawną odpowiedzią @Lahiru, ale nie działałem z serwerem MySQL w wersji 8.0.16 (Społeczność) na macOS Mojave.

Postępując zgodnie z instrukcjami powyżej Sameer Choudhary i z pewnymi poprawkami, byłem w stanie zmienić hasło roota i umożliwić dostęp do roota z localhost.

Aktualizacja: Wszystkie te nie są wymagane, jeśli instalujesz w systemie Mac OS za pomocą homebrew: „brew install mysql”

cspider
źródło
0

Miałem ten problem z Ubuntu 18.04 LTS i Mysql Server wersja 5.7.27-0ubuntu0.18.04.1 (Ubuntu).

Moje rozwiązanie było (działające jako root z sudo -i)

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES ;
EOSQL

mysqladmin -u root password new_pw
Frank Hintsch
źródło
0

Zetknąłem się również z tym samym problemem, co zrobiłem

1) Otwórz swój cmd

2) Przejdź do C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin> (gdzie MySQL Server 8.0 może się różnić w zależności od zainstalowanego serwera)

3) Następnie wprowadź następującą komendę mysql -u root -p

4) Poprosię o hasło ... po prostu naciśnij Enter, ponieważ czasami hasło wpisane podczas instalacji zmienia się na puste.

teraz możesz po prostu uzyskać dostęp do bazy danych

To rozwiązanie działało dla mnie na platformie Windows

Aman-D
źródło
0

Podczas gdy najwyższa odpowiedź (w / mysqladmin) działała na Macu 10.15, to nie działała na Ubuntu. Następnie wypróbowałem wiele innych opcji, w tym bezpieczny start dla mysql, żadna nie działała. W ten sposób dodając nową odpowiedź.

Przynajmniej dla wersji, której otrzymałem 5.7.28-0ubuntu0.18.04.4, brakowało odpowiedzi IDENTIFIED WITH mysql_native_password. 5.7.28 jest ustawieniem domyślnym w bieżącym LTS, a zatem powinno być domyślnym dla większości nowych systemów (do 20.04 wychodzi LTS).

Znaleziono: https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server i teraz zastosowano

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

co działa.

arntg
źródło
0

Wystąpił błąd

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

to był problem z działającym portem.

Domyślnie mysql działa port 3306.

Możesz to sprawdzić, uruchamiając

  • w systemie 32-bitowym:

    sudo /opt/lampp/manager-linux.run

  • w systemie 64-bitowym:

    sudo /opt/lampp/manager-linux-x64.run

i kliknij configureprzycisk

Panel sterowania xampp

W moim przypadku port działał na 3307 i użyłem polecenia

mysql -u root -p -P 3307 -h 127.0.0.1
Rochana Pathiraja
źródło
0

W moim przypadku próbowałem zdać polecenie do kontenera. W takim przypadku interpretowano tylko pierwsze słowo. Upewnij się, że nie działasz:

mysql

w przeciwieństwie do:

mysql -uroot -ppassword schemaname

może spróbuj zacytować:

'mysql -uroot -ppassword schemaname'
Nie
źródło