it-swarm.com.de

Zugriff für Benutzer 'root' @ 'localhost' (mit Passwort: YES) nach Neuinstallation unter Ubuntu verweigert

Heute habe ich mich als root in Ubuntu 14.04.1 LTS ll eingeloggt

und dann apt-get install mariadb-server (ohne Sudo aber als root).

Mit mySQL -h localhost -u root --password=<PW> Ich habe

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

Mit mySQL -u root -p Ich habe mich in der DB angemeldet und

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<PW>';
FLUSH ALL PRIVILEGES;

Aber das hat nicht geholfen. Hast du eine Idee? Ich habe keine Antwort auf die ähnlichen Fragen gefunden.

86
SQL-Neuling

TL; DR: Um als Root-Benutzer auf neuere Versionen von mysql/mariadb zugreifen zu können, müssen Sie sich nach einer Neuinstallation in einer Root-Shell befinden ( dh Sudo mysql -u root oder mysql -u root in einer Shell, die zuerst mit su - oder Sudo -i gestartet wurde)


Nachdem ich gerade dasselbe Upgrade auf Ubuntu durchgeführt hatte, hatte ich das gleiche Problem.

Was seltsam war, war das

Sudo /usr/bin/mysql_secure_installation

Würde mein Passwort akzeptieren und mir erlauben, es festzulegen, aber ich konnte mich nicht als root über den mysql Client anmelden

Ich musste mit Mariadb anfangen

Sudo mysqld_safe --skip-grant-tables

zugriff als root zu bekommen, während alle anderen Benutzer noch fein zugreifen konnten.

In der Tabelle mysql.user, Die ich für root gesehen habe, ist die Spalte plugin auf unix_socket Gesetzt, während alle anderen Benutzer auf 'mysql_native_password' gesetzt sind. Ein kurzer Blick auf diese Seite: https://mariadb.com/kb/en/mariadb/unix_socket-authentication-plugin/ erklärt, dass der Unix-Socket die Anmeldung durch Matching von uid ermöglicht. des Prozesses, der den Client mit dem des Benutzers in der Tabelle mysql.user ausführt. Mit anderen Worten, um als root auf mariadb zugreifen zu können, müssen Sie als root angemeldet sein.

Sicher genug, um meinen mariadb-Daemon mit der erforderlichen Authentifizierung neu zu starten, kann ich mich als root anmelden

Sudo mysql -u root -p

oder

Sudo su -
mysql -u root -p

Nachdem ich das getan hatte, dachte ich darüber nach, wie ich zugreifen kann, ohne das Sudo zu machen, was nur eine Frage der Ausführung dieser MySQL-Abfragen ist

GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;

(Ersetzen Sie <password> durch Ihr gewünschtes mysql-root-Passwort). Dadurch wurden die Kennwortanmeldungen für den Root-Benutzer aktiviert.

Alternativ können Sie die mysql-Abfrage ausführen:

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;

Ändert das Root-Konto, um die Passwort-Anmeldung zu verwenden, ohne das Passwort zu ändern. Dies kann jedoch dazu führen, dass Sie eine mysql/mariadb-Installation ohne Root-Passwort durchführen.

Nach einem dieser Schritte müssen Sie mysql/mariadb neu starten:

Sudo service mysql restart

Und voila ich hatte Zugriff von meinem persönlichen Konto über mysql -u root -p

BITTE BEACHTEN SIE, DASS IS REDUZIEREN DER SICHERHEIT Vermutlich haben sich die MariaDB-Entwickler für einen solchen Root-Zugriff entschieden guter Grund.

Wenn ich darüber nachdenke, bin ich ziemlich froh, dass ich Sudo mysql -u root -p Muss, also wechsle ich wieder dorthin, aber ich dachte, ich würde meine Lösung posten, da ich woanders keine finden könnte.

222
DorianFM

In sauberem Ubuntu 16.04 LTS hat MariaDB root login for localhost vom Passwortstil zum Sudo-Anmeldestil gewechselt ...

also tu es einfach

Sudo mysql -u root

da wir uns mit Passwort anmelden wollen, erstelle einen anderen Benutzer 'user'

in der MariaDB-Konsole ... (Sie erhalten in der MariaDB-Konsole mit 'Sudo mysql -u root')

use mysql
CREATE USER 'user'@'localhost' IDENTIFIED BY 'yourpassword';
\q

dann in bash Shell Prompt,

mysql-workbench

und du kannst dich mit 'user' mit 'yourpassword' auf localhost einloggen

35
Curycu

Versuchen Sie den Befehl

Sudo mysql_secure_installation

drücken Sie die Eingabetaste und vergeben Sie ein neues Passwort für root in mysql/mariadb.

Wenn Sie einen Fehler wie bekommen

FEHLER 2002 (HY000): Verbindung zum lokalen MySQL-Server über Socket '/var/run/mysqld/mysqld.sock' nicht möglich

aktivieren Sie den Dienst mit

service mysql start

jetzt, wenn Sie erneut mit eingeben

mysql -u root -p

wenn Sie dem Problem folgen, geben Sie mit Sudo su und mysql -u root -p Wende nun Berechtigungen auf root an

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '<password>';

das hat mein Problem in MariaDB behoben.

Viel Glück

9
IsraelM17

Ich musste als root bei Ubuntu eingeloggt sein, um auf Mariadb als root zugreifen zu können. Möglicherweise hat dies etwas mit dem "Harden ..." zu tun, zu dem Sie bei der Erstinstallation aufgefordert werden. Damit:

$ Sudo su
[Sudo] password for user: yourubunturootpassword
# mysql -r root -p
Enter password: yourmariadbrootpassword

und du bist dabei.

3
Joe C

Ich hatte mal ein ähnliches Problem. In meinem Fall ist es passiert, weil ich irgendwie meine Benutzertabelle des MySQL Servers beschädigt habe.

Dieser Artikel hat mir geholfen: mysql-how-to-fix-Access-denied-for-user-'root '@' localhost '

Grundsätzlich müssen Sie den Root-Benutzer zurücksetzen.

2
fishi0x01

Der neue Befehl zum Löschen der Berechtigungen lautet:

FLUSH PRIVILEGES

Der alte Befehl FLUSH ALL PRIVILEGES Funktioniert nicht mehr.

Sie erhalten eine Fehlermeldung, die so aussieht:

MariaDB [(none)]> FLUSH ALL PRIVILEGES; ERROR 1064 (42000): 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 'ALL PRIVILEGES' at line 1

Hoffe das hilft :)

1
Sylvain

vom Superuser akzeptierte Antwort :

Sudo mysql -u root
use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;
0
sailfish009

Führen Sie mysql_upgrade aus.

Prüfe das

SHOW GRANTS FOR 'root'@'localhost';

sagt

GRANT ALL PRIVILEGES ON ... WITH GRANT OPTION 

Überprüfen Sie, ob die Tabelle _mysql.proxies_priv_ vorhanden ist.

Zugriff für Benutzer 'root' @ 'localhost' verweigert, während versucht wird, Berechtigungen zu erteilen. Wie erteile ich Berechtigungen?

0
Interlated

Ein System wie Ubuntu bevorzugt das auth_socket Plugin. Es wird versucht, sich zu authentifizieren, indem es Ihren Benutzernamen in der Datenbank und den Prozess vergleicht, der die MySQL-Anforderung veranlasst. es ist beschrieben in hier

Das Socket-Plugin überprüft, ob der Socket-Benutzername (der Benutzername des Betriebssystems) mit dem vom Client-Programm angegebenen MySQL-Benutzernamen für den Server übereinstimmt, und lässt die Verbindung nur zu, wenn die Namen übereinstimmen.

Stattdessen möchten Sie möglicherweise mit dem mysql_native_password zurückkehren, für dessen Authentifizierung Benutzer/Passwort erforderlich sind.

Über die Methode, um das zu erreichen, empfehle ich stattdessen this .

0
Nguyen