Herramientas y automatización para MySQL
El workflow MySQL separa handshake, identidad aportada, cuenta autorizada y privilegios. El cliente oficial es la referencia para confirmar lo que una herramienta preautenticación infiere.
Herramientas
Sección titulada «Herramientas»| Pregunta | Herramienta | Señal |
|---|---|---|
| ¿habla MySQL o un protocolo compatible? | mysql-info |
handshake y capacidades |
| ¿qué TLS y plugin negocia? | cliente mysql |
estado de sesión |
| ¿qué ve una cuenta? | consultas SQL | grants y objetos |
| ¿por qué difieren dos resultados? | cliente con --verbose |
fase y código del servidor |
nmap -sV -p 3306 --script mysql-info TARGET_IPmysql-info no autentica ni prueba el parche efectivo. Un proxy o MariaDB puede anunciar una cadena compatible. Confirma con una sesión.
--batch --raw --skip-column-names produce output estable para procesar. -e ejecuta una consulta y termina:
mysql -h TARGET_IP -u USERNAME -p \ --batch --raw --skip-column-names \ -e 'SELECT VERSION(), USER(), CURRENT_USER();'No añadas la contraseña detrás de -p. Para pipelines, usa un archivo de opciones con permisos restrictivos y bórralo al cerrar.
Controlar transporte y tiempo de conexión
Sección titulada «Controlar transporte y tiempo de conexión»--connect-timeout=SECONDS limita cuánto espera el cliente al establecer la conexión. No limita una consulta que ya está ejecutándose. --protocol=TCP evita que un nombre local seleccione un socket Unix y permite comparar el mismo transporte que usa una herramienta remota. --sdoc-mode=VERIFY_IDENTITY exige TLS, una cadena de confianza válida y coincidencia del hostname. Por ello necesita un FQDN y el archivo de la autoridad certificadora indicado por --sdoc-ca:
mysql --host=FQDN --user=USERNAME --password \ --protocol=TCP --connect-timeout=10 \ --sdoc-mode=VERIFY_IDENTITY --sdoc-ca=CA_FILE \ --batch --raw --skip-column-names \ --execute="SELECT VERSION(), USER(), CURRENT_USER(); SHOW STATUS LIKE 'Ssl_cipher';"La señal esperada son una fila con la versión y las dos identidades, seguida del estado Ssl_cipher. Un fallo de hostname no prueba que el servicio esté caído. Conserva el error y compara VERIFY_CA solo para separar validación de cadena y validación de identidad. No rebajes el modo TLS en la receta final.
NSE y límites
Sección titulada «NSE y límites»mysql-databases, mysql-users, mysql-variables y mysql-query necesitan credenciales o material de autenticación compatible. Sus resultados dependen de grants. mysql-enum y mysql-brute realizan intentos de cuentas y no pertenecen al reconocimiento inicial. Revisa scripts y argumentos con:
nmap --script-help 'mysql-*'No selecciones el glob para ejecutar. Fija un script, el puerto y la credencial por alias. Confirma datos sensibles mediante consultas equivalentes y conserva el SQL exacto.
Diagnóstico
Sección titulada «Diagnóstico»Un error 1045 apunta a autenticación o regla de host. 1049 indica una base desconocida. Fallos de plugin pueden significar cliente antiguo. Si la IP falla y el FQDN funciona, compara validación TLS, resolución y reglas user@host. Si Nmap responde y el cliente no, comprueba proxy, requisito TLS y compatibilidad del plugin.