MyCLI: Cliente de terminal para MySQL con autocompletado
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).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í.
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!