Hace unos días, mientras estaba trabajando simultaneamente en varias bases de datos en MySQL, se me presento el problema de no saber a ciencia cierta de tanto ir y venir, en cual estaba ejecutando las consultas. Ante este problema y con ganas de poder visualizar constantemente estos datos, se me ocurrió personalizar el prompt de MySQL para que cumpla mis necesidades :)

El prompt de MySQL puede ser modificado para mostrarnos, por ejemplo, la base de datos en la que estamos trabajando actualmente, el nombre de host, o la cantidad de consultas que llevamos ejecutadas.

Para personalizarlo, tenemos 3 opciones:

  • Como una variable de entorno: MYSQL_PS1
export MYSQL_PS1='mysql (\d) >'

Probandolo….

catherine:~# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1006
Server version: 5.0.51a-24-log (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql ((none)) > use wordpressmu
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql (wordpressmu) >
  • Una vez que estamos logueados
catherine:~# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1006
Server version: 5.0.51a-24-log (Debian)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> prompt 'mysql (\d) > '
PROMPT set to ''mysql (\d) > ''
mysql ((none)) > use wordpressmu
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql (wordpressmu) >

Pero, hasta ahora esas opciones son útiles para ser usadas cada vez que iniciamos sesión. Veamos la forma de configurar todo para que estos cambios persistan:

  • Editando el archivo my.cnf

Si queremos que estos cambios esten disponibles globalmente, podemos editar el archivo my.cnf  (el arhivo de configuración principal de MySQL).

Agregamos la la linea en el archivo, luego de [mysql]

[mysql]
prompt = 'mysql (\d) > '

Y ya no es necesario probar para saber que obtendremos el mismo resultado.

¿Que ventajas obtenemos al realizar estas modificaciones globalmente? En entornos de desarrollo e inclusivo
producción, donde estemos trabajando constantemente en la consola de MySQL, esta funcionalidad puede
ser de utilidad para evitar errores. El saber en que servidor y base de datos estamos parados en este
instante, puede salvar a cualquiera de una catástrofe.

Ok. ¿Y que más puedo hacer?

En las formas de configurar el prompt, mostré solamente un ejemplo, que personalmente uso y me resulta cómodo. Con un poco de imaginación (o necesidad) se pueden hacer más cosas. Aquí el listado de información que nos brinda MySQL para hacerlo.

\c   Un contador que se incrementa cada vez que ejecutamos una consulta
\D   La fecha actual completa
\d   La base de datos que estamos usando actualmente
\h   El nombre del servidor
\l   El delimitador actual (útil cuando estamos usando probando procedimientos almacenados)
\m   Minutos de la hora actual
\n   Nueva linea
\O   El mes actual en formato de tres letras
\o   El número del mes actual
\P   am/pm
\p   El puerto TCP/IP actual o socket
\R   Hora actual (0-23)
\r   Hora actual (1-12)
\s   Segundos de la hora actual
\t   Tabulación
\U   Usuario completo de la forma usuario@host
\u   Usuario
\v   La versión del servidor
\w   El día actual en formato de tres letras
\Y   El año actual en cuatro digitos
\y   El año actual en dos digitos
\_   Un espacio
\’   Comilla simple
\”   Comillas dobles
\\   Contrabarra