Odmowa dostępu do MySQL dla użytkownika „root” @ „localhost”

24

Na moim serwerze za każdym razem, gdy próbuję uzyskać dostęp do MySQL, pojawia się błąd:

Odmowa dostępu dla użytkownika „root” @ „localhost” (przy użyciu hasła: NIE)

kiedy próbuję mysqladmin -u root -p password, dostaję

Odmowa dostępu dla użytkownika „root” @ „localhost” (przy użyciu hasła: TAK)

Jak mogę uzyskać dostęp do MySQL na moim serwerze Ubuntu 12.04?

użytkownik253867
źródło
1
Staraj się unikać wpisywania hasła jako parametru w wierszu poleceń, inni użytkownicy mogą je znaleźć za pomocą list procesów. Znacznie lepiej wpisać go bezpośrednio w programie lub użyć klucza
Amias
Składnia -p passwordjest nieprawidłowa, musi być, -ppasswordale nie jest zalecana. Więcej informacji: stackoverflow.com/questions/5131931/...
Melebius
Sprawdź tę stronę, aby znaleźć możliwe przyczyny tego błędu i obejścia tego problemu. rathishkumar.in/2017/04/… . To może ci pomóc.
rathishDBA

Odpowiedzi:

12

Jeśli używasz n hosta lokalnego, po prostu wpisz poniższe polecenie w terminalu:

mysql -u root -p

Jeśli używasz zewnętrznego serwera, wprowadź również adres IP hosta (xxx.xxx.xxx.xxx):

mysql -hxxx.xxx.xxx.xxx -uroot -p

Zostaniesz poproszony o podanie hasła, wprowadź je, aby uzyskać dostęp do monitu MySQL.

Możesz także spojrzeć na tę odpowiedź na temat resetowania hasła MySQL.

Parto
źródło
dostałem się, ale nadal nie wiem, jak zmienić lub wybrać hasło
user253867
W odpowiedzi, z którą się łączyłem, musisz zamienić 5.xna końcu wersję serwera MySQL, którego używasz. Używam 5.5, więc moim poleceniem będziesudo dpkg-reconfigure mysql-server-5.5
Parto
9
Problem polega na tym, że OP widzi Access denied for user 'root'@'localhost'. Sugerujesz dzwonienie mysql -u root -p. Wynikiem tego polecenia jest następująca: Access denied for user 'root'@'localhost'.
phil294
5
sudo mysql -u root -pdziała dla mnie, ale mysql -u root -pnie działa
Ivan Black
7

Pojawiają się te same objawy podczas aktualizacji, ale dla mnie poprawka (po zabiciu mysql i zrestartowaniu przy użyciu --skip-grant-tables, aby się dostać) to wykonanie

update mysql.user set plugin = '';

Proces aktualizacji lubi ustawić tę kolumnę na „unix_socket”. Nie wiem, co to ma osiągnąć, ale dla mnie wszystko to psuje.

dogtato
źródło
To rozwiązuje mój problem na Ubuntu 16 LTS, po wypróbowaniu wszystkiego ... uprawnień, użytkownik grupy. Dzięki
onalbi
tak, uruchomiłem skrypt hartowania i zmieniłem wtyczkę na mysql_sockettak, aby wszystko, co było ustawione PASSWORD('xxxxxx'), nie działało.
TheVillageIdiot
4

Ustaw hasło dla mysql

sudo dpkg-reconfigure mysql-server-5.x

Teraz otwórz terminal i wpisz

mysql -uroot -p

podaj hasło i naciśnij enter

Conor
źródło
4

Rozwiązałem mój problem z tym:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt install mysql-server

Bądź wyjątkowo odpowiedzialny. Dzięki temu rozwiązaniu usuwasz serwer MySql i wszystkie jego dane.

Andrew Zolotarev
źródło
Nie działa dla mnie
Ivan Black,
!! Bądź wyjątkowo odpowiedzialny. Dzięki temu rozwiązaniu usuwasz serwer MySql i wszystkie jego dane.
Matiss Jurgelis
4

Tak samo jak Ulrich Metzger, po uaktualnieniu mojego komputera do Ubuntu 16.04 i Mysql-server-5.7, nie mogłem zalogować się z rootem, ponieważ pluginkolumna się zmieniła.

Mój problem nie został rozwiązany przy sudo dpkg-reconfigure mysql-server-5.7+ usuwaniu + czyszczeniu + czyszczeniu.

Musiałem zatrzymać usługę mysql:

# sudo service mysql stop

Następnie uruchom ponownie demona mysql z --no-grant-tablesopcją:

# sudo mysqld_safe --no-grant-tables &

Następnie w innym terminalu wprowadź komendę mysql (która teraz nie wymaga uwierzytelnienia) mysqli zaktualizuj hasło i kolumny wtyczek poprzez aktualizację SQL:

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

Na koniec zabij mysqld_safepolecenie, uruchom ponownie usługę mysql i normalnie połącz się z mysql:

# sudo service mysql start
# mysql
Kuuak
źródło
2

Po aktualizacji z Ubuntu 14.4LTS do 16.4LTS użytkownik root mysql nie mógł się już zalogować z powodu błędnego wpisu w kolumnie wtyczki tabeli użytkowników mysql. Uaktualnienie ustawia wartość wtyczki dla użytkownika root @ localhost na auth_socket, ale poprawnym wpisem musi być hasło mysql_native_password , jeśli wcześniej używane było szyfrowanie natywnego hasła mysql.

Ulrich Metzger
źródło
Ten działał dla mnie i wydaje się być źródłem problemu. Deinstalacja i ponowna instalacja nic nie naprawi „problemu”.
SteveFromAccounting