Zmiana hasła za pomocą konsoli mysqldump

55

Korzystam z mysqldump za pomocą skryptu bash i napotkałem problem z hasłem zawierającym znaki specjalne.

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

Jak mogę uniknąć hasła?

psynnott
źródło

Odpowiedzi:

84

Znalazłem odpowiedź Musisz podać hasło:

mysql -u root -p'PASSWORD'

Musisz to zrobić, jeśli hasło ma jeden z następujących znaków: * ? [ < > & ; ! | $ ( )

psynnott
źródło
Czy wiesz, jak uciec apostrofom w haśle?
Steve Mayne
3
@ SteveMayne myślę, że to tylko odwrotny ukośnik przed nim
psynnott
3
nawiasy też muszą być w cudzysłowie.
Félix Gagnon-Grenier
1
W systemie Windows stwierdziłem, że muszę użyć podwójnych cudzysłowów. Pojedyncze cytaty nie działały. (MySQL 5.6)
TheStoryCoder
1
puste pola w haśle również wymagają „”
Hafenkranich,
12

gdy używasz cudzysłowów, upewnij się, że nie ma spacji:
między -pi 'PASSWORD' lub
między --password=i'PASSWORD'

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

nie działa:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

możesz także zdefiniować zmienną, a następnie użyć jej dla polecenia (wciąż bez odstępów między nimi) MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD

MReiter
źródło
2

Zależy od twojej powłoki. Czy korzystasz z systemu Microsoft Windows lub Linux? Jeśli używasz systemu Linux / BASH, prawdopodobne jest, że $$ jest interpretowana jako bieżący identyfikator procesu. Czy próbowałeś umieścić odwrotny ukośnik przed każdym znakiem dolara? na przykład

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

Zauważ, że gzip prawdopodobnie wymaga opcji „-c”, jeśli chcesz skompresować do STDOUT.

PP.
źródło
Hasło, którego używam, to nie PA $$ W0RD, ale użyłem tego jako przykładu. Rzeczywiste hasło, którego używam, zawiera znak handlowe i to jest przyczyną problemu. Użyłem odwrotnego ukośnika, jak sugerowałeś, ale to nie zadziałało.
psynnott,
2

Spróbuj backslashing ( \) tych specjalnych znaków.

antychris
źródło