Passwort mit mysqldump console maskieren

55

Ich führe einen mysqldump über ein Bash-Skript aus und habe ein Problem mit einem Kennwort festgestellt, das Sonderzeichen enthält.

mysqldump -hlocalhost -uUSERNAME -pPA$$W0RD DATABASE | 
                                gzip > /home/USERNAME/backups-mysql/BACKUP.gz

Wie entkomme ich dem Passwort?

psynnott
quelle

Antworten:

84

Ich habe die Antwort gefunden. Sie müssen das Passwort wie folgt angeben:

mysql -u root -p'PASSWORD'

Sie müssen dies tun, wenn das Kennwort eines der folgenden Zeichen enthält: * ? [ < > & ; ! | $ ( )

psynnott
quelle
Wissen Sie, wie Sie Apostrophe innerhalb des Passworts umgehen können?
Steve Mayne
3
@SteveMayne Ich denke, es ist nur ein Backslash davor
Psynnott
3
Klammern müssen auch in Anführungszeichen gesetzt werden.
Félix Gagnon-Grenier
1
Unter Windows musste ich doppelte Anführungszeichen verwenden. Einfache Anführungszeichen funktionierten nicht. (MySQL 5.6)
TheStoryCoder
1
Leerzeichen im Passwort erfordern zusätzlich den ''
Hafenkranich
12

Wenn Sie die Anführungszeichen verwenden, stellen Sie sicher, dass kein Leerzeichen vorhanden ist:
zwischen -pund 'PASSWORD' oder
zwischen --password=und'PASSWORD'

richtig:
mysql -u root -p'PASSWORD'
mysql -u root --password='PASSWORD'

funktioniert nicht:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

Sie können auch eine Variable definieren und diese dann für den Befehl verwenden (immer noch ohne Leerzeichen dazwischen). MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD

MReiter
quelle
2

Kommt auf deine Muschel an. Verwenden Sie Microsoft Windows oder Linux? Wenn Sie Linux / BASH verwenden, wird $$ wahrscheinlich als Ihre aktuelle Prozess-ID interpretiert. Haben Sie versucht, vor jedes Dollarzeichen einen Backslash zu setzen? z.B

mysqldump \
  -hlocalhost \
  -uUSERNAME \
  -pPA\$\$W0RD \
  DATABASE \
| gzip -c \
> /home/USERNAME/backups-mysql/BACKUP.gz

Beachten Sie, dass gzip wahrscheinlich die Option "-c" benötigt, wenn Sie nach STDOUT komprimieren möchten.

PP.
quelle
Das Passwort, das ich benutze, ist nicht PA $$ W0RD, aber ich habe dies als Beispiel verwendet. Das tatsächliche Kennwort, das ich verwende, hat ein kaufmännisches Und, und das ist, was das Problem verursacht. Ich habe den Backslash verwendet, wie Sie vorgeschlagen haben, aber es hat nicht funktioniert.
Psynnott
2

Versuchen Sie, \diese speziellen Zeichen mit einem Backslash ( ) zu versehen.

Antichris
quelle