MySQL-Zugriff für Benutzer 'root' @ 'localhost' verweigert

23

Auf meinem Server erhalte ich jedes Mal, wenn ich versuche, auf MySQL zuzugreifen, die Fehlermeldung:

Zugriff verweigert für Benutzer 'root' @ 'localhost' (mit Passwort: NEIN)

wenn ich es versuche mysqladmin -u root -p passwordbekomme ich

Zugriff verweigert für Benutzer 'root' @ 'localhost' (mit Passwort: JA)

Wie kann ich in meinem Ubuntu-Server 12.04 auf MySQL zugreifen?

user253867
quelle
1
Versuchen Sie zu vermeiden, dass Sie Ihr Kennwort als Parameter in die Befehlszeile eingeben. Andere Benutzer können es über Prozesslisten finden. Viel besser, es direkt in das Programm
einzugeben
Die Syntax -p passwordist falsch, muss sein -ppassword, wird aber nicht empfohlen. Weitere Informationen: stackoverflow.com/questions/5131931/…
Melebius
Überprüfen Sie diese Seite auf mögliche Ursachen für diesen Fehler und Problemumgehungen, um diesen Fehler zu beheben. rathishkumar.in/2017/04/… . Es kann dir helfen.
rathishDBA

Antworten:

12

Wenn Sie n localhost ausführen, geben Sie im Terminal einfach den folgenden Befehl ein:

mysql -u root -p

Wenn Sie einen externen Server verwenden, geben Sie auch die Host-IP (xxx.xxx.xxx.xxx) ein:

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

Sie werden aufgefordert, Ihr Kennwort einzugeben, und Sie können auf Ihre MySQL-Eingabeaufforderung zugreifen.

In dieser Antwort erfahren Sie auch, wie Sie Ihr MySQL-Passwort zurücksetzen.

Parto
quelle
Ich
bin eingestiegen,
In der Antwort, auf die ich verlinkt habe, müssen Sie das 5.xam Ende durch die Version des MySQL-Servers ersetzen, den Sie verwenden. Ich benutze 5.5, mein Befehl wird also seinsudo dpkg-reconfigure mysql-server-5.5
Parto
9
Das Problem ist also, dass OP sieht Access denied for user 'root'@'localhost'. Sie schlagen vor, anzurufen mysql -u root -p. Das Ergebnis dieses Befehls lautet: Access denied for user 'root'@'localhost'.
Phil294
5
sudo mysql -u root -pfunktioniert für mich, aber mysql -u root -pnicht
Ivan Black
7

Ich bekomme die gleichen Symptome, wenn ich aktualisiere, aber für mich ist das Update (nachdem ich mysql beendet und mit --skip-grant-tables neu gestartet habe, um hineinzukommen) auszuführen

update mysql.user set plugin = '';

Der Update-Vorgang setzt diese Spalte gerne auf "unix_socket". Ich weiß nicht, was das bewirken soll, aber für mich bricht es alles.

dogtato
quelle
Dies löst mein Problem auf Ubuntu 16 LTS, nachdem ich alles versucht habe .. Berechtigungen, Gruppenbenutzer. Vielen Dank.
Onalbi
Ja, ich hatte ein Hardening-Skript ausgeführt und es hat das Plugin mysql_socketso geändert, dass alles, was ich verwenden wollte PASSWORD('xxxxxx'), nicht funktionierte.
TheVillageIdiot
4

Legen Sie ein Passwort für MySQL fest

sudo dpkg-reconfigure mysql-server-5.x

Öffnen Sie nun das Terminal und tippen Sie

mysql -uroot -p

Geben Sie Ihr Passwort ein und drücken Sie die Eingabetaste

Conor
quelle
4

Ich habe mein Problem damit gelöst:

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

Seien Sie äußerst verantwortungsbewusst. Mit dieser Lösung entfernen Sie den MySql-Server und alle seine Daten.

Andrew Zolotarev
quelle
Funktioniert bei mir nicht.
Ivan Black
!! Sei extrem verantwortungsbewusst. Mit dieser Lösung entfernen Sie den MySql-Server und alle seine Daten.
Matiss Jurgelis
4

Ebenso wie Ulrich Metzger konnte ich mich nach dem Upgrade meines Computers auf Ubuntu 16.04 und MySQL-Server-5.7 nicht mit root anmelden, da sich die pluginSpalte geändert hatte.

Mein Problem wurde mit sudo dpkg-reconfigure mysql-server-5.7+ Entfernen + Spülen + Reinigen nicht gelöst .

Ich musste den Mysql-Dienst stoppen:

# sudo service mysql stop

Starten Sie dann den mysql-Daemon mit der folgenden --no-grant-tablesOption neu:

# sudo mysqld_safe --no-grant-tables &

Geben Sie dann in einem anderen Terminal die MySQL-Konsole (die jetzt keine Authentifizierung benötigt) mit dem Befehl ein mysqlund aktualisieren Sie die Kennwort- und Plugin-Spalten über ein SQL-UPDATE:

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

mysqld_safeBeenden Sie schließlich den Befehl, starten Sie den mysql-Dienst neu und stellen Sie eine normale Verbindung zu mysql her:

# sudo service mysql start
# mysql
Kuuak
quelle
2

Nach dem Upgrade von Ubuntu 14.4LTS auf 16.4LTS konnte sich der MySQL-Root-Benutzer aufgrund eines falschen Eintrags in der Plugin-Spalte der MySQL-Benutzertabelle nicht mehr anmelden. Das Upgrade setzt den Plugin-Wert für den Benutzer root @ localhost auf auth_socket, aber der richtige Eintrag muss mysql_native_password sein , wenn Sie zuvor die native Passwortverschlüsselung von mysql verwendet haben.

Ulrich Metzger
quelle
Dies ist diejenige, die für mich gearbeitet hat, und scheint die Wurzel des Problems zu sein. Durch Deinstallieren und erneutes Installieren wird das "Problem" nicht behoben.
SteveFromAccounting