El prompt por defecto del cliente MySQL es mysql>, un indicador genérico que no te dice nada sobre a qué servidor estás conectado, con qué usuario ni en qué base de datos estás trabajando. Cuando administras múltiples servidores (producción, staging, desarrollo), esta falta de contexto puede llevar a ejecutar una consulta destructiva en el servidor equivocado. Personalizar el prompt es una medida sencilla que mejora enormemente la seguridad y la productividad.

Sintaxis y secuencias de formato

El prompt del cliente MySQL se puede personalizar usando secuencias de escape especiales que se reemplazan dinámicamente con información de la conexión actual:

\u  - Nombre del usuario actual
\h  - Nombre del host del servidor
\d  - Base de datos seleccionada actualmente
\D  - Fecha y hora completa
\p  - Puerto TCP de la conexión
\v  - Versión del servidor
\n  - Salto de línea
\t  - Tabulador
\\  - Barra invertida literal

Estas secuencias se combinan libremente para construir un prompt informativo. El prompt más utilizado en entornos profesionales muestra el usuario, el host y la base de datos:

\u@\h [\d]>

Que se renderiza como:

admin@db-produccion [tienda_online]>

Cambiar el prompt durante la sesión

La forma más rápida de cambiar el prompt es usar el comando prompt dentro de una sesión de MySQL:

prompt \u@\h [\d]>\_
PROMPT set to '\u@\h [\d]> '
admin@localhost [(none)]>

Observa la secuencia \_ al final, que inserta un espacio. Sin ella, el cursor quedaría pegado al símbolo >.

Si cambias de base de datos, el prompt se actualiza automáticamente:

USE tienda_online;
Database changed
admin@localhost [tienda_online]>

También puedes incluir la fecha para tener un registro temporal de cuándo ejecutaste cada comando:

prompt [\D] \u@\h [\d]>\_
[Tue Mar 18 14:30:22 2025] admin@localhost [tienda_online]>

Para volver al prompt por defecto durante la sesión:

prompt
Returning to default PROMPT of mysql>
mysql>

Configurar el prompt con la variable de entorno

Para que el prompt personalizado se aplique automáticamente cada vez que abras una sesión de MySQL, puedes definir la variable de entorno MYSQL_PS1. Añade esta línea al archivo de perfil de tu shell.

Para Bash (.bashrc o .bash_profile):

export MYSQL_PS1="\u@\h [\d]> "

Para Zsh (.zshrc):

export MYSQL_PS1="\u@\h [\d]> "

Después de guardar el archivo, recarga el perfil:

source ~/.bashrc

A partir de ahora, cada vez que ejecutes mysql -u admin -p, el prompt mostrará:

admin@localhost [(none)]>

Configurar el prompt en my.cnf

La forma más robusta y portable de configurar el prompt es a través del archivo de configuración de MySQL. La ventaja es que funciona independientemente de la shell o el usuario del sistema operativo:

[mysql]
prompt = "\\u@\\h [\\d]> "

Nota que en el archivo my.cnf necesitas doble barra invertida (\\) porque el archivo de configuración procesa los escapes una primera vez. Si usaras una sola barra, las secuencias no se interpretarían correctamente.

Para verificar que la configuración se aplicó:

mysql -u root -p
root@localhost [(none)]>

Caso práctico: prompts diferenciados por entorno

En un equipo que gestiona tres entornos (producción, staging y desarrollo), puedes configurar prompts con etiquetas que identifiquen visualmente cada servidor. MySQL no soporta colores nativamente en el prompt, pero puedes usar etiquetas textuales claras.

En el servidor de producción (/etc/mysql/conf.d/prompt.cnf):

[mysql]
prompt = "[PROD] \\u@\\h [\\d]> "
[PROD] admin@db-prod-01 [erp]>

En el servidor de staging:

[mysql]
prompt = "[STAG] \\u@\\h [\\d]> "
[STAG] admin@db-staging [erp]>

En el servidor de desarrollo:

[mysql]
prompt = "[DEV] \\u@\\h [\\d]> "
[DEV] dev_user@localhost [erp_dev]>

Esta práctica ha evitado incontables desastres. Cuando ves [PROD] en tu prompt, piensas dos veces antes de ejecutar un DROP TABLE o un UPDATE sin WHERE.

Caso práctico: prompt con información avanzada

Si administras servidores con múltiples instancias en diferentes puertos, puedes incluir el puerto en el prompt para evitar confusiones:

[mysql]
prompt = "\\u@\\h:\\p [\\d]> "
admin@db-server:3306 [tienda_online]>

Para un prompt en dos líneas que muestre más información sin saturar la línea de entrada:

[mysql]
prompt = "\\u@\\h [\\d] \\v\\n>> "
admin@db-prod-01 [erp_produccion] 8.0.36
>>

En este formato, la primera línea muestra el contexto completo (usuario, host, base de datos y versión del servidor) y la segunda línea es donde escribes el comando. Esto es particularmente útil cuando trabajas con consultas largas y quieres maximizar el espacio horizontal.

Opciones adicionales del cliente mysql

Mientras configuramos el prompt, vale la pena conocer otras opciones del cliente que mejoran la experiencia de trabajo en la sección [mysql] del archivo de configuración:

[mysql]
prompt = "\\u@\\h [\\d]> "
 
# Habilitar autocompletado de nombres de tablas y columnas
auto-rehash
 
# Mostrar resultados de forma más legible
pager = "less -SFX"
 
# Juego de caracteres
default-character-set = utf8mb4

La opción auto-rehash permite que el cliente cargue los nombres de las tablas y columnas al conectarse, habilitando el autocompletado con Tab. La opción pager envía los resultados largos al programa less, donde puedes desplazarte cómodamente con las flechas.

Personalizar el prompt del cliente MySQL es una de esas pequeñas inversiones de tiempo que paga grandes dividendos en seguridad y comodidad. En el siguiente artículo veremos mysql_config_editor, una herramienta que permite almacenar credenciales de conexión de forma segura para evitar escribir contraseñas en la línea de comandos.

Escrito por Eduardo Lázaro