Gibt es eine Möglichkeit, das DB-Benutzerkennwort an das Befehlszeilentool mysqladmin zu übergeben?


102

Ich verwende derzeit Folgendes, aber es fordert mich IMMER auf, das Kennwort manuell einzugeben. Gibt es eine Möglichkeit, es beim Starten der ausführbaren Datei in der Befehlszeile zu übergeben?

mysqladmin processlist -u root -p

3
Setzen Sie MYSQL_PWD in der Umgebung ( export MYSQL_PWD=muhpassword) und führen Sie Ihren Befehl ohne das aus -p. Siehe MySQL-Programmumgebungsvariablen . Trotz der düsteren Warnungen des Handbuchs ist dies ziemlich sicher . Es sei denn, Sie starten seltsame Warez in derselben Shell, die Ihre Umgebung saugen könnte, und senden sie an darkaspirator.cc.
David Tonhofer

Antworten:


190

Habe gerade die Antwort herausgefunden ...

mysqladmin processlist -u root -pYOURPASSWORDHERE

Kein Leerzeichen zwischen Ihrem Passwort und dem -p


14
Anführungszeichen sind auch zulässig, wenn das Passwort Leerzeichen enthält, wie in:-p'YOURPASSWORD HERE'
Vigintas Labakojis

40
Wow ... wirklich intuitiv ... Raum zwischen -h localhostund -u rootaber nicht -pPASSWORD. Klassische Programmierer machen alles schwieriger als nötig.
Kolob Canyon

4
@ KolobCanyon Sie können das Leerzeichen zwischen -u und root weglassen, -urootfunktioniert gut
Peter Ajtai

11
Warnung: Dies wird als unsicher angesehen: dev.mysql.com/doc/mysql-security-excerpt/5.7/en/…
Neverendingqs

3
@KolobCanyon: Was ist, wenn Ihr Passwort mit einem Leerzeichen beginnt? ;) Der Programmierer kann nicht entscheiden, ob das Leerzeichen die Option und ihren Wert trennt oder das erste Zeichen des Passworts ist…
Stéphane

43

Versuchen:

--password=PasswordTextHere 

Nützlich, wenn Sie ein "leeres" Passwort übergeben müssen (natürlich zu Testzwecken).
Ivo Pereira

Dies scheint auch die einzige Option zu sein, um ein leeres Passwort in der Befehlszeile zu übergeben (zum Beispiel auf einer Sandbox-Instanz)
penCsharpener

10

Das sollte funktionieren: mysql -uroot -p'password'

Wenn Sie versuchen, die MySQL-Lösung zu automatisieren, können Sie das Kennwort aus der Variablen verwenden:

mysql_pass=$(sudo grep -oP "temporary password is generated for root@localhost: \K(.*)" /var/log/mysqld.log)

mysql -uroot -p"$mysql_pass" < somescript.sql

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.