Cómo securizar los accesos desde consola a MySQL

Publicado el 03 noviembre 2015 por Dbigcloud @dbigcloud

Esta semana os traigo un post cortito sobre MySQL, en especial una característica que fue introducida en la versión 5.6 y que continua en la 5.7. ¿Cuantas veces habéis realizado un history en vuestros servidores de base de datos y os habéis encontrado con que alguien puso la password de acceso a MySQL junto al -p? Desde la versión 5.6 podemos securizar los accesos a la base de datos a través de consola y os voy a contar cómo podemos hacerlo.

 

Me he encontrado muchas veces con scripts de backups de base de datos MySQL en los cuales podíamos ver la password del usuario fácilmente, muchas de estas veces de usuarios con superprivilegios, cómo por ejemplo:

mysqldump -u root -pPASSWORDROOT -h localhost --all-databases --skip-lock-tables > backup_alldb.sql

MySQL introdujo en la versión 5.6 el uso de un comando que nos va a permitir encriptar los datos de conexión, el comando mysql_config_editor, pasandole los datos de conexión, nos va a generar un fichero .mylogin.cnf en nuestra carpeta de usuario, totalmente encriptado, a ésto se le conoce cómo login path, su funcionamiento es muy sencillo:

[root@dbigcloud01 /]# mysql_config_editor set --login-path=root_local --user=root --host=localhost --password
Enter password:

Si creamos diferentes path podemos consultarlos de la siguiente forma:

[root@dbigcloud01 /]# mysql_config_editor print --all
[root_local]
user = root
password = *****
host = localhost

En mi caso, solo dispongo de uno que es root_local, el que acabamos de crear. Ahora si necesitamos conectarnos al servidor de MySQL desde linea de comandos podemos hacerlo de la siguiente forma:

[root@dbigcloud01 /]# mysql --login-path=root_local
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.9 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

En la siguiente imagen podéis ver todos los pasos realizados en la consola:

Con ésto se acabó el encontrarnos passwords de root o usuarios escritas en la consola, si por ejemplo vamos a hacer un mysqldump podemos hacerlo igual, por lo que es ideal para scripts de backups.