Wie testen Sie MySQL-Anmeldeinformationen über die Befehlszeile auf einem Linux-Server?
quelle
Wie testen Sie MySQL-Anmeldeinformationen über die Befehlszeile auf einem Linux-Server?
@ Phil's Answer und @ Mr.Brownstone's Answer sollten für Ihre Frage ausreichen, also +1 für beide.
Im Folgenden nehmen wir an, dass Sie sich mit dem Benutzernamen anmelden myuser
Sobald Sie eine Verbindung zu MySQL hergestellt haben, sollten Sie die folgende Abfrage ausführen:
SELECT USER(),CURRENT_USER();
Manchmal sind sie anders. Dies kann Ihnen einen Einblick geben, warum Sie sich bei mysql anmelden dürfen.
Hier ist eine weitere Abfrage, die Sie ausführen müssen:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
Dies zeigt Ihnen, wie Sie sich anmelden dürfen myuser
.
Wenn Sie sehen 'myuser'@'localhost'
, können Sie sich vom DB-Server aus authentifizieren.
Wenn Sie sehen 'myuser'@'127.0.0.1'
und nicht sehen 'myuser'@'localhost'
, können Sie sich erneut über den DB-Server authentifizieren, müssen dies jedoch --protocol=tcp
über die Befehlszeile angeben .
Wenn Sie sehen 'myuser'@'%'
, können Sie sich von jedem Server aus remote anmelden.
Wenn Sie sehen 'myuse'r@'10.20.30,%'
, können Sie Remote-Anmeldungen nur für den Netblock 10.20.30.% Ausführen.
Sobald Sie sehen, was "mysql.user" für Ihren Benutzer hat, möchten Sie möglicherweise zulassen oder einschränken, dass sich myuser auf die eine und nicht auf die andere Weise anmeldet.
Wenn Sie nur überprüfen möchten, ob das Kennwort für myuser
ist whateverpassword
, können Sie Folgendes tun:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
Sie können über die Befehlszeile Folgendes überprüfen:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
Wenn Sie dies nicht sind root
und nur myuser testen möchten, können Sie dies tun:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
Wenn Sie 1 erhalten, wird das Passwort für myuser als gut bestätigt.
mysql -h host -u user -p<whatever> -e"quit"
Auf diese Weise können Sie dieselbe Verbindungszeichenfolge verwenden, die Sie zum programmgesteuerten Senden von Abfragen an den Server verwenden. Sie können || exit 1
am Ende hinzufügen , dass ungültige Argumente automatisch beendet werden. Möglicherweise möchten Sie auch stderr umleiten, /dev/null
wenn Ihnen die automatisch generierte MySQL-Fehlermeldung nicht gefällt.
Sie können den folgenden Befehl verwenden (vorausgesetzt, Sie haben mysql in Ihrem PATH eingerichtet):
mysql -h host -u benutzer -p
Ersetzen Sie einfach Host und Benutzer durch die richtigen Werte, und Sie sollten zur Eingabe Ihres Kennworts aufgefordert werden.
Ist Ihre Frage so einfach, oder gibt es einen speziellen Fall, den Sie testen müssen?
quelle