info example databases data all mysql mysqldump mysql-error-1044

example - ¿Mysqldump--password realmente hace lo que dice?



mysqldump table (10)

Estoy tratando de usar mysqldump para volcar un esquema, y ​​funciona principalmente, pero me encontré con una curiosidad: la opción -p o --password parece que está haciendo algo más que establecer la contraseña (como la página de man y --help salida de --help dice que debería).

Específicamente, parece que está haciendo lo que se indica aquí: http://snippets.dzone.com/posts/show/360 , es decir, establecer la base de datos para volcar.

Para respaldar mi afirmación un tanto descabellada, puedo decirle que si no especifico la --password (o -p ), el comando imprime la declaración de uso y sale con un error. Si lo especifico, inmediatamente se me solicita ingresar una contraseña (!) Y luego la base de datos especificada en la opción --password se --password (o se da un error en el caso habitual de que no se haya encontrado una contraseña que coincida con el nombre de la base de datos). especificado).

Aquí hay una transcripción:

$ mysqldump -u test -h myhost --no-data --tables --password lose Enter password: -- MySQL dump 10.10 mysqldump: Got error: 1044: Access denied for user ''test''@''%'' to database ''lose'' when selecting the database

Entonces, ¿qué da? ¿Es esta la manera en que se supone que funciona? Seguramente no parece tener sentido ni coincide con la documentación oficial. Y, por último, si esto funciona así, ¿cómo debo especificar la contraseña que se utilizará en un trabajo automatizado? ¿Usando expect ?

Estoy usando mysqldump Ver 10.10 Distrib 5.0.22, for pc-linux-gnu (i486) .


¿Intentó --password = whatever-password-is?

Quizás me estoy perdiendo la pregunta, pero eso es lo que hago para ejecutar la herramienta.


¿Tal vez su "prueba" de usuario no tiene el permiso para acceder a su base de datos "perder"?



Intenta colocar un ''='' entre - password lose like:

--password=lose

Si usa -p, entonces no puede haber espacio entre la -p y la contraseña, es decir, "-plose".


La opción -p no requiere un argumento. Simplemente pones -p o --contraseña para indicar que vas a usar una contraseña para acceder a la base de datos. La razón por la que está volcando la base de datos con el nombre que puso después de -p es que el último argumento para mysqldump debe ser el nombre de la base de datos que desea volcar (o --all-databases si las quiere todas).

La respuesta de @ Nathan también es cierta. Puede especificar la contraseña inmediatamente después del modificador -p (útil en scripts y en los que no puede ingresarlo manualmente después de ejecutar el comando).


No estoy seguro si funciona para la versión de contraseña, pero si usa -p puede especificar la contraseña inmediatamente después (la clave no es para incluir un espacio):

mysqldump -pmypassword ...


Si usa la -p o la -contraseña sin un argumento, recibirá un mensaje pidiéndole que ingrese una contraseña.

Si desea indicar una contraseña en la línea de comando, debe usar -pYOURPASSWORD o --password = YOURPASSWORD. Observe que no hay espacio después de -p, y hay un signo "=" después de --password.

En su ejemplo, mysqldump solicita una contraseña y luego trata "perder" como el nombre de la base de datos. Si esa fuera su contraseña, debería haber incluido un "="


Otra opción es crear el archivo ~ / .my.cnf (los permisos deben ser 600).

Agregue esto al archivo .my.cnf

[client] password=lose

Esto le permite conectarse como un usuario de MySQL que requiere una contraseña sin tener que ingresar la contraseña. Ni siquiera necesitas la contraseña -p o -.

Muy útil para escribir comandos mysql y mysqldump.


Descubrí que esto sucede si tu contraseña tiene caracteres especiales. La contraseña de mysql aquí tiene un! en él, así que tengo que hacer == contraseña = ''xxx! xxxx'' para que funcione correctamente. Tenga en cuenta las ''marcas.


Del hombre mysqldump:

--contraseña [= contraseña], -p [contraseña]

La contraseña para usar cuando se conecta al servidor. Si usa el formulario de opción corto (-p), no puede tener espacio entre la opción y la contraseña. Si omite el valor de la contraseña siguiendo la opción --password o -p en la línea de comando, se le pedirá uno.
Especificar una contraseña en la línea de comando debe considerarse inseguro. Consulte la Sección 6.6, "Cómo mantener segura su contraseña".

Sintácticamente, no está utilizando correctamente el modificador --password. Como tal, el analizador de línea de comandos ve el uso de "perder" como un argumento independiente que mysqldump interpreta como el nombre de la base de datos como lo haría si intentara un comando más simple como mysqldump lose

Para corregir esto, intente utilizar --password=lose o -plose o simplemente use -p o --password y escriba la contraseña cuando se le solicite.