Como está usando Ubuntu, todo lo que necesita hacer es agregar un archivo en su directorio de inicio y deshabilitará la solicitud de contraseña de mysqldump. Esto se hace creando el archivo ~/.my.cnf
(los permisos deben ser 600).
Agregue esto al archivo .my.cnf
[mysqldump]
user=mysqluser
password=secret
Esto le permite conectarse como un usuario de MySQL que requiere una contraseña sin tener que ingresarla. Ni siquiera necesita la contraseña -p o -.
Muy útil para scripts de comandos mysql y mysqldump.
Los pasos para lograr esto se pueden encontrar en este enlace .
Alternativamente, puede usar el siguiente comando:
mysqldump -u [user name] -p[password] [database name] > [dump file]
pero tenga en cuenta que es inherentemente inseguro, ya que cualquier otro usuario del sistema puede ver el comando completo (incluida la contraseña) mientras se ejecuta el volcado, con un ps ax
comando simple .
--defaults-file
. Como `mysqldump --defaults-file = my_other.cnf --print-defaults`~/.my.cnf
. Ver stackoverflow.com/a/14653239/470749 . MySql esperaba que el mío estuviera enc:\wamp\bin\mysql\mysql5.5.24\my.cnf
. Entonces creé un archivo allí. Reiniciar Mysql no fue necesario; funcionó de inmediato para mi próximo mysqldump.GRANT LOCK TABLES, SELECT ON *.* TO 'BACKUPUSER'@'%' IDENTIFIED BY 'PASSWORD';
Agregando a la respuesta de @ Frankline:
La
-p
opción debe excluirse del comando para usar la contraseña en el archivo de configuración.Correcto:
mysqldump –u my_username my_db > my_db.sql
Incorrecto:
mysqldump –u my_username -p my_db > my_db.sql
.my.cnf
puede omitir el nombre de usuario.Si su
.my.cnf
archivo no está en una ubicación predeterminada ymysqldump
no lo ve, especifíquelo usando--defaults-file
.mysqldump --defaults-file=/path-to-file/.my.cnf –u my_username my_db > my_db.sql
fuente
Algunas respuestas mencionan poner la contraseña en un archivo de configuración.
Alternativamente, desde su script puede hacerlo
export MYSQL_PWD=yourverysecretpassword
.La ventaja de este método sobre el uso de un archivo de configuración es que no necesita un archivo de configuración separado para mantenerse sincronizado con su script. Solo tiene que mantener el script.
No hay inconveniente en este método.
La contraseña no es visible para otros usuarios en el sistema (sería visible si está en la línea de comando). Las variables de entorno solo son visibles para el usuario que ejecuta el comando mysql y root.
La contraseña también será visible para cualquiera que pueda leer el script en sí, así que asegúrese de que el script esté protegido. Esto no es diferente a proteger un archivo de configuración. Todavía puede obtener la contraseña de un archivo separado si desea que el script se pueda leer públicamente (
export MYSQL_PWD=$(cat /root/mysql_password)
por ejemplo). Todavía es más fácil exportar una variable que construir un archivo de configuración.P.ej,
fuente
export MYSQL_PWD=...
qué no aparecen en la lista de procesos. Ni siquiera por una fracción de segundo. Esto se debe a que elexport
comando es (y tiene que ser) un shell incorporado. Por lo tanto, el shell no bifurca / ejecuta un proceso con el argumento del comando si lo ejecuta en su shell.Para usar un archivo que esté en cualquier lugar dentro del sistema operativo, use,
--defaults-extra-file
por ejemplo:Nota:
.sqlpwd
es solo un nombre de archivo de ejemplo. Puedes usar lo que desees.Nota: MySQL verificará automáticamente
~/.my.cnf
qué se puede usar en lugar de--defaults-extra-file
Si estás usando CRON como yo, ¡prueba esto!
Permiso requerido y propiedad recomendada
.sqlpwd
contenido:Otros ejemplos para pasar
.cnf
o.sqlpwd
Si desea iniciar sesión en una base de datos automáticamente, necesitaría la
[mysql]
entrada, por ejemplo.Ahora puede hacer un alias que lo conecte automáticamente a DB
También solo puede poner la contraseña dentro
.sqlpwd
y pasar el nombre de usuario a través del script / cli. No estoy seguro de si esto mejoraría la seguridad o no, esa sería una pregunta diferente en conjunto.Para completar, afirmaré que puede hacer lo siguiente, pero es extremadamente inseguro y nunca debe usarse en un entorno de producción:
Nota: NO HAY ESPACIO entre -p y la contraseña.
Por ejemplo,
-pPassWord
es correcto mientras que-p Password
es incorrecto.fuente
Sí, es muy fácil ... solo en una línea de comando mágica no más
y hecho :)
fuente
Para mí, usando MariaDB tuve que hacer esto: agregar el archivo
~/.my.cnf
y cambiar los permisos haciendochmod 600 ~/.my.cnf
. Luego agregue sus credenciales al archivo. La pieza mágica que me faltaba era que la contraseña debe estar bajo el bloque del cliente (ref: docs ), así:Si vienes aquí buscando cómo hacer un mysqldump con MariaDB. Coloque la contraseña debajo de un bloque [cliente], y luego el usuario debajo de un bloque [mysqldump].
fuente
[mysqldump]
sección y funcionó sin ningún problema. Ubuntu 18.04 LTSAquí hay una solución para Docker en un script / bin / sh:
Reemplace
[MYSQL_CONTAINER_NAME]
y asegúrese de que la variable de entornoMYSQL_ROOT_PASSWORD
esté configurada en su contenedor.Espero que te ayude como me podría ayudar!
fuente
Tengo lo siguiente
/ etc / mysqlpwd
Con el siguiente alias.
Para hacer una restauración simplemente uso:
fuente
¿Qué pasa con --password = "" funcionó para mí corriendo en 5.1.51
fuente
--password=xxx
en la línea de comando hará que la contraseña sea visible para cualquier persona con capacidad de leer proc (o hacer ps completa), lo cual es bastante predeterminado.Definitivamente, creo que sería mejor y más seguro colocar la línea cmd completa en el crontab raíz, con credentails. Al menos la edición crontab está restringida (legible) a alguien que ya conoce la contraseña ... así que no se preocupe por mostrarla en texto plano ...
Si necesita más que un simple mysqldump ... simplemente coloque un script bash que acepte credentails como params y realice todas las comodidades dentro ...
El archivo bas en simple
En el Crontab:
fuente
Puede especificar la contraseña en la línea de comando de la siguiente manera:
¡Las opciones para mysqldump son sensibles a mayúsculas y minúsculas!
fuente
mysqldump -u root -pmypassword