Das Administratorkennwort von MariaDb scheint nicht zu funktionieren

8

Ich habe gerade MariaDbauf einem neuen Ubuntu Gnome installiert und anschließend mysql_secure_installation ausgeführt, wo ich ein anständiges Administratorkennwort festgelegt, den anonymen Benutzer entfernt usw. habe.

Danach bemerkte ich ein seltsames Verhalten bezüglich des Administratorkennworts:

  • Wenn ich versuche, mich mit dem Befehl von meinem normalen Benutzerkonto aus anzumelden, wirdmysql -u root -p immer eine Fehlermeldung angezeigt : ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    Ich bin mir ziemlich sicher, dass ich das richtige Kennwort eingegeben habe, das ich zuvor mit mysql_secure_installation festgelegt habe ...
  • Wenn ich den Befehl von root mit ausführe sudo mysql -u root -p, erhalte ich immer Zugriff auf die Datenbank, unabhängig davon, welches Passwort ich tatsächlich eingebe ...

Ist das normal, mache ich etwas falsch oder habe ich die Installation irgendwie vermasselt?

Suamikim
quelle

Antworten:

16

Dieses Verhalten steht im Einklang mit der Aktivierung des Plugins für die Socket-Authentifizierung für den Root-Benutzer, bei dem MariaDB den über den Socket empfangenen Betriebssystemanmeldeinformationen vertraut und sich nicht auf ein Kennwort stützt. Wenn sudoSie als Root verwenden oder sich anmelden, können Sie als Root eine Verbindung zum Datenbankserver herstellen, da Sie im Betriebssystem root sind, andere Betriebssystembenutzer jedoch nicht.

Sie können diese Option entfernen mit:

$ sudo mysql -u root

mysql> use mysql;
mysql> update user set plugin='' where User='root';
mysql> flush privileges;

und dann erhalten Sie das erwartete Verhalten, wenn sich ein Benutzer mit dem MariaDB-Root-Passwort als root anmelden kann.

Die Alternative besteht darin, einen anderen Benutzer einzurichten, nicht root, der ebenfalls über die vollständigen Administratorrechte verfügt, und diesen anstelle von root für Verwaltungszwecke zu verwenden:

$ sudo mysql -u root
mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost'
->     WITH GRANT OPTION;
HBruijn
quelle
0

Die Antwort von HBruijn angegeben zu verwenden

update user set plugin='' where User='root';

Dies hat jedoch das Anmeldesystem für mich zerstört, da sich niemand mehr anmelden konnte (ob mit dem richtigen Passwort oder nicht und sudo oder nicht)

Damit es funktioniert, musste ich stattdessen Folgendes verwenden:

update user set plugin="mysql_native_password" where User='root';
Alex
quelle