Uso de herramientas MySQL (I)

Herramientas MySQL

Oracle proporciona una serie de programas de línea de comandos (también llamados herramientas) para MySQL. Estos programas siguen un formato de sintaxis común para opciones, aunque cada uno tiene sus propias opciones específicas. La mayoría comparten estructuras similares en cómo se especifican los argumentos.

Página oficial de MySQL 8.0:

  • Información general sobre programas MySQL — Visión general
  • Uso de programas MySQL — Cómo utilizarlos
  • Programas del servidor y de inicio del servidor — Servidor e iniciadores
  • Programas relacionados con la instalación — Herramientas de instalación
  • Programas cliente — Clientes MySQL
  • Programas administrativos y utilidades — Herramientas de gestión
  • Utilidades para desarrollo de programas — Herramientas de desarrollo
  • Programas diversos — Otras herramientas
  • Variables de entorno — Variables de entorno
  • Manejo de señales Unix en MySQL — Señales Unix

Métodos de uso de programas MySQL

Para ejecutar un programa MySQL desde la línea de comandos (shell o símbolo del sistema), se debe escribir el nombre del programa seguido de las opciones y parámetros necesarios. El ejemplo siguiente muestra algunos casos típicos:

shell> mysql --user=root test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump -u root personnel

Las opciones que comienzan con un guion simple (-) o doble (--), indican configuraciones específicas para el programa. Los parámetros sin guiones (no opciones) aportan información adicional. Por ejemplo, mysql interpreta el primer argumento no opcional como el nombre de la base de datos, por lo que mysql --user=root test indica que se desea conectarse a la base de datos test.

Algunas opciones son comunes a múltiples programas, especialmente aquellas relacionadas con la conexión: --host (o -h) para el servidor, --user (o -u) para el usuario, y --password (o -p) para la contraseña. También existen --port (o -P) para el puerto TCP/IP y --socket (o -S) para el archivo de socket en Unix o tubería nombrada en Windows.

En muchos casos, es necesario incluir la ruta completa al directorio bin de MySQL si se ejecuta desde otro directorio. Esto genera errores como "comando no encontrado". Para facilitar el uso, se recomienda añadir la ruta del directorio bin a la variable de entorno PATH. Así, basta con escribir mysql en lugar de /usr/local/mysql/bin/mysql.

Especificación de opciones (importante)

Existen tres formas principales de definir opciones en programas MySQL:

  1. Línea de comandos: Útil para configuraciones temporales o específicas.
  2. Archivos de opciones (configuración): Ideal para opciones que deben aplicarse automáticamente cada vez.
  3. Variables de entorno: Útiles cuando se gestionan múltiples instancias de MySQL en Unix.

El orden de procesamiento es clave: primero se revisan las variables de entorno, luego los archivos de opciones, y finalmente los argumentos de línea de comandos. Las últimas opciones tienen prioridad sobre las anteriores.

Excepción: En mysqld, la primera instancia de --user se considera como medida de seguridad para evitar que sea sobrescrita desde la línea de comandos.

Ejemplo de conflicto de opciones:

mysql --column-names --skip-column-names

Aquí, el último valor prevalece: --skip-column-names desactiva los encabezados.

2.1 Opciones en la línea de comandos

Reglas básicas:

  • Las opciones se colocan tras el nombre del programa.
  • Formato corto (-h) o largo (--host) — ambos son válidos.
  • Los nombres de opciones distinguen entre mayúsculas y minúsculas. Ejemplo: -v vs -V.
  • Algunas opciones requieren un valor después del nombre. Pueden usarse =, espacios, o concatenación directa:
  • -h localhost = -h=localhost
  • Para contraseñas, hay dos formas:
  • --password=clave → inyecta la clave directamente.
  • --password → solicita interactivamente la contraseña.

Importante:

mysql -ptest     # Usa 'test' como contraseña, sin base de datos
mysql -p test    # Solicita contraseña, usa 'test' como base de datos

Ambos comandos tienen significados completamente distintos.

Otras reglas:

  • Guiones (-) y guiones bajos (_) son intercambiables en nombres de opciones (ej: --skip-grant-tables--skip_grant_tables).
  • En servidores, los nombres de variables de sistema usan guiones bajos (_) y no pueden usar guiones (-). Ejemplos:
SET GLOBAL general_log = ON;
SELECT @@GLOBAL.general_log;

Para valores numéricos, se pueden usar sufijos como K (1024), M (1024²), G (1024³), T (1024⁴), P (1024⁵), E (1024⁶). Letras mayúsculas o minúsculas son aceptadas.

Si un valor contiene espacios, debe ir entre comillas:

shell> mysql -u root -p -e "SELECT VERSION(); SELECT NOW()"
Enter password: ******
+------------+
| VERSION()  |
+------------+
| 8.0.19     |
+------------+
+---------------------+
| NOW()               |
+---------------------+
| 2019-09-03 10:36:48 |
+---------------------+

2.2 Uso de archivos de opciones

La mayoría de los programas MySQL leen opciones desde archivos de configuración. Esto evita tener que escribir las mismas opciones repetidamente.

Para verificar si un programa lee archivos de opciones, use --help (para mysqld, use --verbose --help).

Notas importantes sobre archivos de opciones

  • Si se usa --no-defaults, solo se carga .mylogin.cnf (archivo cifrado).
  • Servidores con persisted_globals_load desactivado no leen mysqld-auto.cnf.

Creación de archivos de opciones

  • Archivos de texto plano: editables con cualquier editor.
  • .mylogin.cnf: generado por mysql_config_editor, cifrado. Contiene solo opciones de conexión (host, user, password, port, socket).
  • mysqld-auto.cnf: archivo JSON generado automáticamente por el servidor al usar SET PERSIST o SET PERSIST_ONLY. No debe editarse manualmente.

Orden de lectura de archivos de opciones

Windows

Los archivos se leen en este orden (el último tiene prioridad):

  • %WINDIR%\my.ini, %WINDIR%\my.cnf → opciones globales
  • C:\my.ini, C:\my.cnf → globales
  • <BASEDIR>\my.ini, <BASEDIR>\my.cnf → globales
  • Archivo especificado con --defaults-extra-file
  • %APPDATA%\MySQL\.mylogin.cnf → rutas de inicio de sesión (clientes)
  • <DATADIR>\mysqld-auto.cnf → variables persistentes (servidor)

Donde:

  • %WINDIR%: normalmente C:\Windows
  • %APPDATA%: directorio de datos de aplicaciones
  • BASEDIR: directorio raíz de instalación
  • DATADIR: directorio de datos del servidor
Unix/Linux

Orden de lectura:

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • <SYSCONFDIR>/my.cnf
  • $MYSQL_HOME/my.cnf
  • Archivo con --defaults-extra-file
  • ~/.my.cnf → opciones personales
  • ~/.mylogin.cnf → rutas de inicio de sesión (clientes)
  • <DATADIR>/mysqld-auto.cnf → variables persistentes

Donde:

  • ~: directorio personal del usuario
  • SYSCONFDIR: directorio configurado durante la compilación (por defecto etc)
  • MYSQL_HOME: variable de entorno que apunta a la carpeta my.cnf específica del servidor
  • DATADIR: directorio de datos del servidor

Excepción: --user en mysqld ignora el primer valor en archivos de opciones para seguriadd.

2.4 Sintaxis de archivos de opciones

Cualquier opción larga (--option=value) puede escribirse en un archivo de opciones sin los dobles guiones. Cada línea debe contener una sola opción.

Formatos permitidos:

  • option=value → equivalente a --option=value
  • Espacios alrededor del = son opcionales.
  • Valores entre comillas simples o dobles si contienen caracteres especiales.
  • Espacios en blanco al inicio o final se eliminan automáticamente.

Caracteres de escape útiles:

  • \b → retroceso
  • \t → tabulador
  • \n → nueva línea
  • \r → retorno de carro
  • \\ → barra invertida
  • \s → espacio

Ejemplos para rutas en Windows:

basedir="C:\Program Files\MySQL\MySQL Server 8.0"
basedir="C:\\Program Files\\MySQL\\MySQL Server 8.0"
basedir="C:/Program Files/MySQL/MySQL Server 8.0"
basedir=C:\\Program\sFiles\\MySQL\\MySQL\sServer\s8.0

Comentarios:

  • Líneas vacías ignoradas.
  • Comentarios con # o ; (incluyendo dentro de línea).

2.5 Grupos de opciones

Un grupo se define con [grupo]. Todo lo que sigue hasta el siguiente grupo pertenece a ese grupo.

Grupos comunes:

  • [client]: aplica a todos los clientes. Ideal para establecer host, usuario y contraseña.
  • [mysqld]: para el servidor.
  • [mysql]: para el cliente mysql.
  • [mysqld-8.0]: opciones solo para MySQL 8.0.

Ejemplo:

[mysqld-8.0]
sql_mode=TRADITIONAL

Plantilla de archivo global típico

[client]
port=3306
socket=/tmp/mysql.sock

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_packet=128M

[mysqldump]
quick

Plantilla de archivo de usuario típico

[client]
password="my password"

[mysql]
no-auto-rehash
connect_timeout=2

Etiquetas: MySQL línea de comandos opciones archivos de configuración my.cnf

Publicado el 9-4 19:17