Escapar de una contraseña usando la consola mysqldump

56

Estoy ejecutando un mysqldump a través de un script bash y he encontrado un problema con una contraseña que contiene caracteres especiales.

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

¿Cómo escapo la contraseña?

psynnott
fuente

Respuestas:

84

Encontré la respuesta. Tienes que citar la contraseña, así:

mysql -u root -p'PASSWORD'

Debe hacer esto si la contraseña tiene alguno de los siguientes caracteres: * ? [ < > & ; ! | $ ( )

psynnott
fuente
¿Sabes cómo escapar de los apóstrofes dentro de la contraseña?
Steve Mayne
3
@SteveMayne, creo que es solo una barra invertida antes de eso
psynnott
3
los paréntesis también deben estar entre comillas.
Félix Gagnon-Grenier
1
En Windows descubrí que tenía que usar comillas dobles. Las comillas simples no funcionaron. (MySQL 5.6)
TheStoryCoder
1
los espacios en blanco en la contraseña también requieren el ''
Hafenkranich
12

cuando use las comillas, asegúrese de que no haya espacio:
entre -py 'PASSWORD' o
entre --password=y'PASSWORD'

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

No funciona:
mysql -u root -p 'PASSWORD'
mysql -u root --password = 'PASSWORD'

también puede definir una variable y luego usarla para el comando (aún sin espacios en el medio) MSQLPWD='PASSWORD'
mysql -u root -p$MSQLPWD

MReiter
fuente
2

Depende de tu caparazón. ¿Estás usando Microsoft Windows o Linux? Si está utilizando Linux / BASH, es probable que $$ se interprete como su ID de proceso actual. ¿Has intentado poner una barra diagonal inversa frente a cada signo de dólar? p.ej

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

Tenga en cuenta que gzip probablemente requiere la opción "-c" si desea comprimir a STDOUT.

PÁGINAS.
fuente
La contraseña que estoy usando no es PA $$ W0RD pero la usé como ejemplo. La contraseña real que estoy usando tiene un ampersand y esto es lo que está causando el problema. Usé la barra invertida como sugirió, pero no funcionó.
psynnott
2

Pruebe la barra invertida ( \) esos caracteres especiales.

Antichris
fuente