MyCLI: Cliente de terminal para MySQL con autocompletado

Publicado por Diego Córdoba en

Hoy introduciremos a mycli, una excelente interfaz de línea de comandos para adminsitrar, de manera sencilla, nuestras bases de datos MySQL utilizando la terminal.


¿Administras bases de datos MySQL o MariaDB? Entonces este artículo te puede interesar.

Como a muchos, a mi no me gusta utilizar PHPMyAdmin en servidores de producción… tener una pata http accediendo directamente a los datos de mis aplicaciones no me resulta, digamos, atractivo (opinión personal).mycli linux mysql mariadb cli Por otro lado, suelo administrar mis bases de datos remotas mediante MySQL Workbench, pero el problema, es que a esta aplicación le encuentro un par de defectos. Por un lado, a veces crashea sin motivo aparente, y por otro, se «come» una buena porción de la memoria RAM de mi ordenador.

Entonces, nos queda una opción: el clásico cliente de línea de comandos para administrar bases de datos: mysql.

Ahora, si no somos expertos en comandos de sql, o el trabajo que necesitamos realizar sobre la DB va mas allá de probar unos select’s, el cliente de línea de comandos puede resultarnos poco amigable.

MyCLI: la solución

Aquí les presento otra solución interesante para administrar bases de datos por medio de la línea de comandos.

Podemos conectarnos a nuestro servidor de base de datos mediante SSL, y correr un cliente como MyCLI y tener, en una interfaz amigable, con coloreo de sintaxis, y autocompletado de comandos (algo muy muy útil) un excelente acceso para administrar nuestras bases de datos MySQL o María DB.

MyCLI es un cliente mysql/mariadb escrito en Python, y muy simple de instalar y utilizar.

Instalación

En ArchLinux, por ejemplo, podemos instalarlo mediante los repos AUR de la siguiente forma:

yaourt -S mycli

En Debian podemos hacerlo desde los repositorios oficiales:

sudo apt install mycli

Y, por supuesto, es python, y está disponible en los repositorios de PIP para cualquier distribución que cuente con un cliente pip:

sudo pip install -U mycli

Uso básico de MyCLI

Entre las características más destacadas de este genial cliente de línea de comandos para MySQL/MariaDB, podemos mencionar:

  • Autocompletado inteligente de línea de comandos. En la medida en que vamos escribiendo veremos un popup con las diferentes opciones para autocompletado, y mediante las teclas de cursor podremos seleccionar la que necesitemos. El menú se despliega con la tecla tabulador en cualquier parte de la sentencia.
  • Resaltado de sintaxis. en la medida en que escribimos nuestras queries, veremos que las palabras reservadas tendrán un color, mientras que los datos y constantes otro, lo que permite identificar y analizar de forma rápida y sencilla, las consultas que realicemos a la DB.
  • El archivo ~/.mycli-history contiene un historial de todos los comandos que fuimos ejecutando en MyCLI, así que ya no perderemos más esas complejas queries a la base de datos! 🙂
  • El archivo de configuración por defecto es ~/.myclirc, y en él se pueden configurar muchos de los aspectos del cliente… colores de resaltado de sintaxis, «verbosidad» de los logs, soporte multilínea para consultas complejas, asociación de teclas, etc.
  • Soporte extendido para conexiones cifradas sobre SSL/TLS.
  • Y no podía ser menos, es opensource! Podemos encontrar su código fuente en aquí.

mycli linux mysql mariadb cli

Ejemplos de uso

Podemos lanzar el comando de varias maneras para conectarnos a nuestra base de datos:

  • Conectándonos a la base de datos local con nuestro usuario de login:
    mycli mi_basededatos
  • Conectándonos a la base de datos remota con username y password:
    mycli -u usuario -h host_servidor basededatos
  • Idem al anterior, especificando protocolo y puerto de comunicación:
    mycli mysql://usuaario@host_servidor:3306/basededatos

Con el comando «mycli –help» tendremos una ayuda detallada de las opciones disponibles, entre las que se encuentran las arriba ejemplificadas. Lo transcribo aquí para que lo tengan de referencia:

diego@cryptos:~$ mycli --help
Usage: mycli [OPTIONS] [DATABASE]

Options:
  -h, --host TEXT               Host address of the database.
  -P, --port INTEGER            Port number to use for connection. Honors
                                $MYSQL_TCP_PORT
  -u, --user TEXT               User name to connect to the database.
  -S, --socket TEXT             The socket file to use for connection.
  -p, --password TEXT           Password to connect to the database
  --pass TEXT                   Password to connect to the database
  --ssl-ca PATH                 CA file in PEM format
  --ssl-capath TEXT             CA directory
  --ssl-cert PATH               X509 cert in PEM format
  --ssl-key PATH                X509 key in PEM format
  --ssl-cipher TEXT             SSL cipher to use
  --ssl-verify-server-cert      Verify server's "Common Name" in its cert
                                against hostname used when connecting. This
                                option is disabled by default
  -v, --version                 Version of mycli.
  -D, --database TEXT           Database to use.
  -R, --prompt TEXT             Prompt format (Default: "\t \u@\h:\d> ")
  -l, --logfile FILENAME        Log every query and its results to a file.
  --defaults-group-suffix TEXT  Read config group with the specified suffix.
  --defaults-file PATH          Only read default options from the given file
  --auto-vertical-output        Automatically switch to vertical output mode
                                if the result is wider than the terminal
                                width.
  -t, --table                   Display batch output in table format.
  --warn / --no-warn            Warn before running a destructive query.
  --local-infile BOOLEAN        Enable/disable LOAD DATA LOCAL INFILE.
  --login-path TEXT             Read this path from the login file.
  -e, --execute TEXT            Execute query to the database.
  --help                        Show this message and exit.

Como se ve, hay opciones para especificar usuario, password, base de datos, consulta o query en particular, tabla, archivo de log, formato del prompt, y datos de conexión SSL/TLS si nuestro servidor sólo acepta conexiones seguras.

Espero esta herramienta les resulta interesante y útil!

Cualquier alternativa, sugerencia o consulta, quedo a disposición en la plataforma de comentarios del blog, espero leerlos!

¡Hasta la próxima entrega!


Próximamente publicaremos esta entrada en video en nuestro canal de youtube, no dejen de suscribirse para estar al tanto de las novedades, y de compartir a quien pueda servirle! ¡GRACIAS!


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador