Kann ich dies tun, wenn ich Root in einer MySQL-Datenbank habe und die Berechtigungen eines normalen Benutzers ohne Verwendung seines Kennworts löschen möchte? Wenn das so ist, wie? Denken Sie # su - username
an Unix. Grundsätzlich möchte ich nur vermeiden, dass ihr Passwort benötigt wird, damit sie ihre Berechtigungen bei ihrem Benutzer testen können. In postgres könnte ich einfach eine Ident-Authentifizierung für den System-Root-Benutzer zulassen, um die Kennwortauthentifizierung zu umgehen. Der Grund, warum ich dies brauche, ist, dass ich in der Lage bin, ein Benutzerproblem zu reproduzieren, indem ich sie bin. Wenn ich sie nicht bin, ist keine genaue Reproduktion möglich. Ich kann natürlich nach ihrem Passwort fragen, aber das dauert länger als das Umgehen.
quelle
Mit der Einführung von Proxy-Benutzern ist es möglich, einen Benutzer ab MySQL 5.5.7 zu emulieren . Ich hatte dies noch nie zuvor getan und habe es daher mit dem Testauthentifizierungs-Plugin ausprobiert , da Proxy-Benutzer anscheinend nur mit aktivierten Authentifizierungs-Plugins arbeiten. Hier sind die Schritte, die ich unternommen habe.
Erste Schritte als root:
mysql> INSTALL PLUGIN test_plugin_server SONAME 'auth_test_plugin.so';
mysql> SHOW PLUGINS;
Erstellen Sie einen Benutzer zum Emulieren (in Ihrem Fall ist er bereits vorhanden):
mysql> GRANT ALL PRIVILEGES ON
dtest@
localhostIDENTIFIED BY 'mypass';
'Proxy'-Benutzer erstellen:
mysql> CREATE USER proxy@localhost IDENTIFIED WITH test_plugin_server AS 'dtest';
mysql> GRANT PROXY ON dtest@localhost TO proxy@localhost;
mysql> FLUSH PRIVILEGES;
Versuchen Sie nun, sich mit user :
proxy
, password:dtest
(der 'AS'-Variablen des Proxy-Benutzers) anzumelden:$ mysql -uproxy -pdtest
mysql> SELECT USER(), CURRENT_USER();
mysql> SHOW GRANTS;
quelle
Heutzutage hat MySQL kein Root-Passwort und verwendet stattdessen das
auth_socket
Plugin, um zu überprüfen, ob der mit dem Socket verbundene Benutzer der Root-Benutzer des Systems ist. Sie können dieselbe Technik verwenden, um Ihr Problem zu lösen, wenn Sie mit Unix-Konten für alle Benutzer einverstanden sind, was alle Arten von Möglichkeiten eröffnet, z. B. eine einfache Speicherung von Binärdateien!Zuerst würden Sie ein Unix-Konto für den Benutzer hinzufügen:
root: adduser testuser
Fügen Sie dann einen passenden MySQL-Benutzer hinzu (könnte automatisch in einem
adduser.local
Skript erfolgen):CREATE USER 'testuser'@'localhost' IDENTIFIED WITH auth_socket;
Wechseln Sie nun zum Benutzer (kein Passwort erforderlich, wenn Sie als root ausgeführt werden):
root: su testuser
Stellen Sie als Benutzer eine Verbindung zu MySQL her (kein Kennwort erforderlich, da Sie als dieser Benutzer angemeldet sind):
testuser: mysql -u $USER
(oder -you testuser anstatt die Umgebungsvariable zu verwenden)Es ist am besten, den
-u
Benutzerparameter anzugeben, da die automatische Benutzerkomfortroutine des MySQL-Clients nicht in der Lage ist, dies selbst herauszufinden. Wenn Sie beispielsweise von Benutzer zu Benutzerkonto wechseln, wird aus irgendeinem Grund der erste Benutzer verwendet.quelle
Ich kenne keinen bestimmten Weg, um das Äquivalent von zu replizieren.
su
Sie benötigen jedoch kein Kennwort. Aufgrund der Art und Weise, wie MySQL die Authentifizierung verarbeitet, können Sie auf jedem Computer ein anderes (oder gar kein) Kennwort festlegen das ist eingeloggt von.quelle