it-swarm.com.de

MySQL-Anmeldeinformationen über die Linux-Befehlszeile testen?

Wie testen Sie MySQL-Anmeldeinformationen über die Befehlszeile auf einem Linux-Server?

17
Jake Wilson

@ Phils Antwort und @ Mr.Brownstones Antwort sollten für Ihre Frage ausreichen, also +1 für beide.

Nehmen wir für Folgendes an, Sie melden sich mit dem Benutzernamen myuser an

Sobald Sie eine Verbindung zu MySQL hergestellt haben, sollten Sie die folgende Abfrage ausführen:

SELECT USER(),CURRENT_USER();
  • SER () gibt an, wie Sie versucht haben, sich in MySQL zu authentifizieren
  • CURRENT_USER () gibt an, wie Sie sich in MySQL authentifizieren durften

Manchmal sind sie unterschiedlich. 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 als myuser anmelden dürfen.

Wenn 'myuser'@'localhost' Angezeigt wird, können Sie sich innerhalb des DB-Servers authentifizieren.

Wenn Sie 'myuser'@'127.0.0.1' Und 'myuser'@'localhost' Nicht sehen, können Sie sich erneut innerhalb des DB-Servers authentifizieren, müssen jedoch --protocol=tcp Über die Befehlszeile angeben.

Wenn Sie 'myuser'@'%' Sehen, können Sie sich von jedem Server aus remote anmelden.

Wenn Sie 'myuse'[email protected]'10.20.30,%' Sehen, können Sie nur die Remote-Anmeldungen ab 10.20.30.% Netblock durchführen.

Sobald Sie sehen, was 'mysql.user' für Ihren Benutzer hat, möchten Sie möglicherweise zulassen, dass myuser auf die eine und nicht auf die andere Weise angemeldet wird.

Wenn Sie einfach überprüfen möchten, ob das Kennwort für myuserwhateverpassword lautet, können Sie Folgendes tun:

SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');

Sie können dies über die Befehlszeile wie folgt ü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 nicht root sind 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.

5
RolandoMySQLDBA
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 am Ende || exit 1 Hinzufügen, um ungültige Argumente automatisch zu beenden. Sie können stderr auch nach /dev/null Umleiten, wenn Ihnen die automatisch generierte MySQL-Fehlermeldung nicht gefällt.

13
CSTobey

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 aufgefordert werden, Ihr Passwort einzugeben.

6
Mr.Brownstone
mysql --user=user_name --password=your_password dbname

Ist Ihre Frage so einfach oder gibt es einen bestimmten Fall, den Sie testen müssen?

2
Philᵀᴹ