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?

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: * ? [ < > & ; ! | $ ( )


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


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.


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.

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.