Cada base de datos tiene su dialecto para la connection string y un pequeño error de encoding suele terminar en `authentication failed` sin más pistas. Este builder genera URIs válidas para PostgreSQL, MySQL, MongoDB, Redis y SQL Server aplicando percent-encoding a la contraseña y ofreciendo los parámetros comunes (sslmode, replicaSet, authSource).
Formato canónico de un DSN
El patrón es `driver://user:password@host:port/database?options`. Los caracteres especiales de la contraseña (`@`, `:`, `/`, `#`, `?`) deben ir percent-encoded o el parser corta la URI en el sitio equivocado. Por ejemplo, `p@ss` se convierte en `p%40ss`. La herramienta lo hace automáticamente.
TLS/SSL: obligatorio en producción
PostgreSQL usa `sslmode=require|verify-ca|verify-full`. MySQL usa `?ssl-mode=REQUIRED`. MongoDB usa `tls=true` y opcionalmente `tlsCAFile`. Nunca desactives verificación de certificado en producción: expone a MITM. Si tu proveedor cloud da un CA bundle propio (RDS, Cloud SQL), inclúyelo.
Pool y timeouts razonables
Añade `connect_timeout`, `pool_max`, `application_name` (Postgres) para debug en `pg_stat_activity`. Configura reintentos en el cliente, no en la connection string. Para MongoDB replicaSet, especifica al menos dos hosts para que el driver haga discovery.
Casos de uso comunes
- Configurar variables de entorno en Docker o Kubernetes secrets.
- Migrar entre proveedores cloud manteniendo la app estable.
- Depurar errores de autenticación por caracteres mal escapados.