36 votos

Lo que es una alternativa segura al uso de un usuario y contraseña en la línea de comandos?

Tenemos un PHP script de línea de comandos a la versión de una base de datos. Nos ejecutar esta secuencia de comandos cada vez que un desarrollador ha añadido una nueva revisión de base de datos.

La secuencia de comandos se ejecuta el parche con la linea de comando de MySQL:

system('mysql --user=xxx --password=xxx < patch.sql');

Sin embargo, MySQL 5.6 ahora emite la siguiente advertencia:

Advertencia: el Uso de una contraseña en la interfaz de línea de comandos puede ser inseguro

Que es obviamente cierto, pero podría o no ser un problema para el usuario.

  • ¿Qué es el seguro de alternativa?
  • Por otra parte, es posible desactivar esta advertencia?

Por favor, tenga en cuenta que no quiero tener que depender de un externo archivo de contraseña.

18voto

En la reciente GA versión de MySQL, es decir, la versión *5.6*, usted puede hacer esto a través de la mysql_config_editor de comandos, como se describe en http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html

Básicamente lo que hace es cifrar tu user/pass credenciales con un alias de host y, a continuación, utiliza el alias de host, poner esta información en un archivo de configuración en el directorio de inicio, y luego, cuando se necesitan, en lugar de hacer algo como:

mysqldump -uroot --password=mycleartextpass mydatabase > dumpfile.sql

en lugar de escribir:

mysqldump --login-path=myhostalias mydatabase > dumpfile.sql

evitando así poner su contraseña en algún script en texto plano.

Para que esto funcione, primero debe (sólo una vez) definen myhostalias como:

mysql_config_editor set --login-path=myhostalias --host=mysqlhost.localnet.com --user=root --password

Puede utilizar diferentes rutas de acceso de inicio de sesión para diferentes cuentas y/o equipos como desee. Muy buena idea, si usted me pregunta.

Como nota, creo, esta funcionalidad hace NO existe en ninguna versión inferior a 5,6.

9voto

lsd Puntos 789

Utilice la opción --defaults-file o --defaults-extra-file de la opción. Usted puede especificar el id de usuario y contraseña. Tiene el mismo formato que /etc/my.cnf.

Leer más, usted dice que usted no quiere tener que depender de un externo archivo de contraseña, pero que es el único realmente seguro. Cualquier otra cosa va a dejar rastros en la tabla de proceso o algo. Usted puede incluso poner la contraseña del archivo de control de versión, si usted realmente quiere. Hacer 600 (o 400) y legible sólo por mysql o el usuario que lo está ejecutando bajo.

6voto

kormoc Puntos 981

Tienes 4 opciones por http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html

  • El uso de un -pyour_pass o --password=your_pass opción en la línea de comandos
  • El uso de la -p o --password opción en la línea de comandos con ningún valor de la contraseña especificada. En este caso, el programa cliente solicita la contraseña de forma interactiva:
  • Guarde su contraseña en un archivo de opciones.
  • Guarde su contraseña en la MYSQL_PWD variable de entorno

Para sus necesidades, MYSQL_PWD podría ser una opción, pero no es la más segura. Realmente debe de reaparición de un proceso interactivo con --password y enviar la contraseña de forma interactiva, pero que es bastante complejo de una solución para este problema.

4voto

Michael Hampton Puntos 88271

Si su script PHP ya tiene abierta una conexión de base de datos, ¿por qué no usar mysqli_multi_query() a la importación de la .archivo sql? Si la sintaxis de la .sql archivo es válido, por supuesto...

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X