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
Ethan Allen
quelle
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

Ethan Allen
quelle
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 
ge0man
quelle
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

3lvinaz
quelle