Ich wurde mehrmals vom Benutzer 'debian-sys-maint' gebissen, der standardmäßig auf den mysql-server-Paketen installiert ist, die aus den Ubuntu-Repositories installiert wurden.
Im Allgemeinen ziehe ich eine neue Kopie unserer Produktionsdatenbank (die nicht unter Debian / Ubuntu läuft) zur Fehlerbehebung oder Neuentwicklung und vergesse, die mysql.user-Tabelle auszuschließen, wodurch der Benutzer debian-sys-maint verloren geht.
Wenn wir aus irgendeinem Grund neue mysql-Benutzer hinzufügen, muss ich diese in meine Entwicklungsumgebung "einbinden", anstatt nur die Tabelle zu überlagern.
Ohne den Benutzer scheint mein System immer noch funktionsfähig zu sein, aber es gibt Fehler wie:
sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
- Wofür wird debian-sys-maint verwendet?
- Gibt es eine bessere Möglichkeit für die Paketbetreuer, das zu tun, was sie versuchen?
- Was ist der einfachste Weg, um es wiederherzustellen, nachdem ich es verloren habe?
- Was sind die richtigen / minimalen Berechtigungen für diesen Benutzer?
- Scheint eine schlechte Idee zu sein, "alle Privilegien für *. * ... zu gewähren"
Bearbeiten
Zusätzliche Frage - Ist das Passwort in /etc/mysql/debian.cnf bereits gehasht oder ist dies das Klartext-Passwort? Es ist wichtig, wann Sie den Benutzer neu erstellen, und ich scheine es beim ersten Versuch nie richtig zu machen.
Vielen Dank
Antworten:
Eine wichtige Aufgabe besteht darin, den Server anzuweisen, die Protokolle zu rollen. Zumindest die Berechtigung zum erneuten Laden und Herunterfahren ist erforderlich.
Siehe die Datei /etc/logrotate.d/mysql-server
Es wird vom
/etc/init.d/mysql
Skript verwendet, um den Status des Servers abzurufen. Es wird verwendet, um den Server ordnungsgemäß herunterzufahren / neu zu laden.Hier ist das Zitat aus der README.Debian
Der beste Plan ist, es einfach nicht zu verlieren. Wenn Sie das Passwort wirklich verlieren, setzen Sie es mit einem anderen Konto zurück. Wenn Sie alle Administratorrechte auf dem MySQL-Server verloren haben, befolgen Sie die Anleitungen zum Zurücksetzen des Root-Passworts und reparieren Sie das
debian-sys-maint
.Mit einem solchen Befehl können Sie eine SQL-Datei erstellen, die Sie später zum erneuten Erstellen des Kontos verwenden können.
Das Kennwort wird bei der Installation nicht gehasht / verschlüsselt, aber neue Versionen von mysql bieten jetzt die Möglichkeit, die Anmeldeinformationen zu verschlüsseln (siehe: https://serverfault.com/a/750363 ).
quelle
Der Benutzer debian-sys-maint ist standardmäßig ein Root-Äquivalent . Es wird von bestimmten Wartungsskripten auf Debian-Systemen verwendet und ermöglicht als Nebeneffekt Benutzern mit Root-Zugriff auf die Box, das Klartext-Passwort in /etc/mysql/debian.cnf (gut oder schlecht?) Anzuzeigen.
Sie können den Benutzer neu erstellen, indem Sie:
Stellen Sie einfach sicher, dass das Passwort mit dem in /etc/mysql/debian.cnf übereinstimmt
quelle
Du könntest auch:
Damit haben Sie die Möglichkeit, den Benutzer debian-sys-maint neu zu erstellen. Bestehende Benutzer und Datenbanken sind sicher.
quelle
Ich wollte nur einen Kommentar abgeben, aber ich denke, dass die korrekte Syntax einen eigenen Eintrag verdient. Dadurch wird der Benutzer debian-sys-maint erstellt :
Wenn Sie immer noch die Datei /etc/mysql/debian.cnf haben, verwenden Sie dort einfach das Kennwort.
Fühlen Sie sich frei, eine
paranoidere undsicherere Lösung zu finden.quelle
/etc/mysql/debian.cnf
der Linux-root
Benutzer in der Lage, die Datei file zu lesen . Und wenn jemand diese Datei lesen kann, hat er bereitsroot
Zugriff auf den Computer und kann den MySQL-Server anhalten und einen eigenen Systemadministrator hinzufügen. Das Skript, mit dem MySQL und andere Pakete gestartet werden, kann keine Sicherheits- und sonstige Wartung durchführen. Also ja, es ist so sicher, wie es jemals sein muss. Und nützlich, wenn Sie das MySQL-Administratorkennwort verlieren, um es wiederherzustellen, ohne es im unsicheren Modus neu starten zu müssen. ;-)Wenn Sie den
debian-sys-maint
Benutzer nur zulogrotate.d
Zwecken hinzufügen müssen , sollten Sie dies nicht gewährenALL PRIVILEGES
oderGRANT OPTION
- dies ist eine unnötige riesige Sicherheitslücke. Stattdessen können Sie einfach den Benutzer mit der folgendenRELOAD
Berechtigung hinzufügen (vorausgesetzt, Sie greifen auf Ihreroot
Datenbank zu und ersetzen xxxxxx durch Ihr Kennwort).Aktualisierung 2019
Diese Antwort ist möglicherweise nicht mehr aktuell - bitte beachten Sie die stark meinungsgebundenen Kommentare unten.
quelle
debian-sys-maint
. Außerdem kann ich bestätigen, dass es wie ein Zauber funktioniert. Prost!debian-sys-maint
Benutzer auch zum Herunterfahren des Servers verwendet wird. Und auch nach einem Root-Benutzer zu suchen, wenn Sie den MySQL-Server starten. Sie müssen also mindestens Auswahlrechte für mysql. * Und zum Herunterfahren gewähren.Anstatt von
Ich denke
weil das Passwort nicht gehasht wird ...?
quelle
Für debian-sys-maint sind Berechtigungen erforderlich
Andere Antworten haben alles ausreichend angesprochen, mit Ausnahme der Mindestberechtigungen, die für den Benutzer debian-sys-maint erforderlich sind. Viele der Antworten hier sind in dieser Hinsicht einfach falsch und sogar gefährlich. Reduzieren Sie die debian-sys-maint-Berechtigungen (einschließlich der Grant-Option) nicht, ohne die folgenden Informationen gelesen und verstanden zu haben:
Der Debian-Betreuer hat dem Benutzer nicht alle Rechte willkürlich eingeräumt. Hier erfahren Sie, was wo und warum erforderlich ist. Einige dieser Berechtigungen sind Obermengen von anderen, aber ich werde sie unabhängig voneinander auflisten, falls Sie Dinge anpassen und die Anforderungen für sie entfernen möchten:
Das letzte ist natürlich die Hauptanforderung für Privilegien. In der Manpage für mysql_upgrade heißt es:
WARNUNG Wenn Sie die Berechtigungen von debian-sys-maint einschränken möchten, stellen Sie sicher, dass Sie bereit sind, zukünftige Debian-Sicherheitsupdates und / oder -Upgrades, die MySQL betreffen, manuell durchzuführen. Wenn Sie ein Update für die MySQL-Pakete mit einem reduzierten debian-sys-maint-Privileg durchführen und mysql_upgrade dadurch nicht abgeschlossen werden kann, bleibt Ihre Datenbank möglicherweise in einem undefinierten (Lesezustand). Das Reduzieren von Berechtigungen hat möglicherweise keine offensichtlichen alltäglichen Probleme, bis ein Update veröffentlicht wird. Gehen Sie also nicht davon aus, dass Sie bereits Berechtigungen ohne schädliche Auswirkungen reduziert haben, um davon auszugehen, dass sie sicher sind.
quelle
Als Randnotiz dazu werfen Sie einen Blick auf diesen mysqlperformance-Blog-Beitrag aus Gründen, warum Sie möglicherweise das debian-spezifische Zeug deaktivieren möchten.
quelle
Bei Verwendung von MySQL 5.6+ würde ich empfehlen, mit dem
mysql_config_editor
Befehl einen Eintrag für den Benutzer'debian-sys-maint'@'localhost'
mit dem entsprechenden Kennwort zu erstellen , dh, das Kennwort muss nicht im Klartext auf dem Server gespeichert werden.mysql_config_editor set --login-path=debian-sys-maint --host=localhost --user=debian-sys-maint --password
Danach kann die debian-spezifische Konfigurationsdatei
/etc/mysql/debian.cnf
geändert werden, so dass der Benutzername und das Passwort nicht in der Datei gespeichert werden.Ändern Sie schließlich die logrotate-Datei für MySQL so, dass sie die in der
~/.mylogin.cnf
Datei gespeicherten Anmeldedaten anstelle der debian-spezifischen Datei verwendet, indem Sie sie ersetzen/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf
mit
/usr/bin/mysqladmin --login-path=debian-sys-maint
Hoffe das hilft :)
Dave
quelle
debian-sys-maint
Benutzers dadurch erreicht? Diese Pakete sollten in der Lage sein, diesen Benutzer / dieses Kennwort für einige Systemwartungsarbeiten alsroot
Benutzer in der Linux-Domäne zu verwenden (keinroot
Benutzer in MySQL, ohne dass der Administrator dasroot
Kennwort für MySQL eingeben muss?/etc/mysql/debian.cnf
, um die Kennwörter zu entfernen, und die Logrotate-Datei ändern, um die gesicherten Details zu verwenden. Ich bin nicht sicher, ob der Benutzer debian-sys-maint für irgendetwas anderes verwendet wird, aber wenn dies der Fall ist, kann dies Ihnen einen Hinweis geben, wo Debian dieses Benutzerkonto in Ihrem Namen verwendet.