mysql -h host -u user -p<whatever> -e"quit"
Dadurch können Sie dieselbe Verbindungszeichenfolge verwenden, die Sie zum programmgesteuerten Senden von Abfragen an den Server verwenden. Sie können || exit 1
hinzufügen bis zum Ende zum automatischen Beenden bei ungültigen Argumenten. Sie können stderr auch auf /dev/null
umleiten 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 user -p
Ersetzen Sie einfach host und Benutzer mit den richtigen Werten und dann sollten Sie nach Ihrem Passwort gefragt werden.
@Phils Antwort und @Mr.Brownstones Antwort sollten für Ihre Frage ausreichen, also +1 für beide.
Nehmen wir im Folgenden an, Sie melden sich mit dem Benutzernamen myuser
an
Sobald Sie sich mit mysql verbunden haben, sollten Sie die folgende Abfrage ausführen:
SELECT USER(),CURRENT_USER();
- USER() meldet, wie Sie versucht haben, sich in MySQL zu authentifizieren
- CURRENT_USER() meldet, wie Sie sich in MySQL authentifizieren durften
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 die Möglichkeiten, wie Sie sich als myuser
anmelden dürfen .
Wenn Sie 'myuser'@'localhost'
sehen , dann können Sie sich innerhalb des DB-Servers authentifizieren.
Wenn Sie 'myuser'@'127.0.0.1'
sehen und sehe 'myuser'@'localhost'
nicht , dann können Sie sich innerhalb des DB-Servers erneut authentifizieren, aber Sie müssen den --protocol=tcp
angeben über die Befehlszeile.
Wenn Sie 'myuser'@'%'
sehen , dann können Sie sich von jedem Server aus remote anmelden.
Wenn Sie 'myuse'[email protected]'10.20.30,%'
sehen , dann können Sie Remote-Logins nur noch ab 10.20.30.% netblock machen.
Sobald Sie sehen, was 'mysql.user' für Ihren Benutzer hat, möchten Sie vielleicht myuser erlauben oder einschränken, sich auf die eine Art und nicht auf die andere anzumelden.
Wenn Sie einfach nur prüfen möchten, ob das Passwort 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 dies von der Befehlszeile aus 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 myuser nur 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 verifiziert.