Si estás aquí es porque has pulsado el botón de MySQL en XAMPP y no ha pasado nada. Cero. Ni error, ni luz verde, ni nada. A mí me pasó un martes por la mañana y estuve a punto de formatear el Mac. Pero no, hay solución y no hace falta ser ingeniero de Apple. Te cuento exactamente qué hice para que XAMPP volviera a arrancar MySQL en mi Mac.
Por qué XAMPP no arranca MySQL en Mac: el puerto 3306 es el culpable habitual
El 90% de las veces que MySQL no arranca en XAMPP es porque el puerto 3306 ya está ocupado. Da igual que no recuerdes tener nada abierto: macOS a veces deja procesos vivos de instalaciones anteriores, de Docker, de MAMP o de un MySQL que instalaste con Homebrew hace meses y ya ni te acordabas.
El síntoma es siempre el mismo: XAMPP se queda en “Starting…” y al rato vuelve a rojo sin explicación. No es un bug de XAMPP, es que hay otro servicio escuchando en el mismo sitio. Y como el puerto está pillado, MySQL se cae y ni se molesta en avisarte bien.
Comprueba esto primero en la Terminal (la abres con Cmd + Espacio y escribes “Terminal”):
lsof -i :3306
Si aparece algo, ahí tienes al intruso. Puede ser mysqld, docker-proxy o cualquier cosa. Anota el PID (el número de la segunda columna) y mándalo a pastar:
kill -9 [PID]
Si el proceso es de Homebrew, mejor:
brew services stop mysql
Con eso liberas el puerto y XAMPP ya puede arrancar MySQL sin pelearse con nadie.
Procesos fantasma de MySQL que siguen vivos aunque no los veas
Hay veces que el puerto está libre pero MySQL sigue sin arrancar. Entonces el problema son procesos zombis. Sí, esos que quedan ahí colgados después de un cierre forzado o de un apagón. Tú crees que MySQL está muerto, pero sigue ahí respirando y bloqueando archivos.
Lista todo lo que tenga que ver con MySQL:
ps aux | grep mysql
Si ves líneas con /Applications/XAMPP/xamppfiles/sbin/mysqld, mátalas una a una:
kill -9 [PID]
Ojo con esto: si tienes otro MySQL del sistema, no lo mates a lo loco. Solo los que apunten a la ruta de XAMPP. El resto pueden ser de otras apps y liarla parda.
El archivo my.cnf corrupto: el truco que me salvó
Después de probar lo anterior, seguía sin arrancar. Y aquí llegó el momento clave. XAMPP guarda su configuración de MySQL en un archivo llamado my.cnf. Si se corrompe (por una actualización, por un cierre brusco, por lo que sea), MySQL no sabe ni cómo levantar.
Lo que hice fue renombrarlo para que XAMPP generase uno nuevo limpio:
mv /Applications/XAMPP/xamppfiles/etc/my.cnf /Applications/XAMPP/xamppfiles/etc/my.cnf.backup
Reinicié XAMPP, pulsé Start en MySQL y… arrancó. Sin tocar nada más. Ese archivo era el culpable de todo el circo. Si a ti te pasa lo mismo, prueba esto antes de desinstalar nada, porque te va a ahorrar una tarde entera.
Eso sí: si tenías configuraciones personalizadas dentro del my.cnf (puerto distinto, rutas, buffer sizes), las pierdes. Por eso lo renombro en vez de borrarlo, para poder recuperar lo que había.
Permisos rotos en la carpeta de datos de MySQL
Otro clásico que aparece de la nada: los permisos de la carpeta /Applications/XAMPP/xamppfiles/var/mysql se rompen y MySQL no puede leer ni escribir sus propios archivos. Esto pasa mucho después de actualizar macOS o de mover XAMPP de sitio.
Se arregla con un par de comandos, pero cuidado, porque aquí sí puedes liar una buena si te equivocas de ruta:
sudo chown -R $(whoami):admin /Applications/XAMPP/xamppfiles/var/mysql
Luego reinicia XAMPP y prueba otra vez. Si sigue igual, mira los logs antes de seguir tocando cosas.
Los logs te dicen exactamente por qué XAMPP no arranca MySQL
Nadie mira los logs hasta que está desesperado. Y es un error, porque ahí está la respuesta escrita con letras grandes. La ruta en Mac es:
/Applications/XAMPP/xamppfiles/var/mysql/*.err
Ábrelos con cualquier editor de texto o desde la Terminal con cat. Si ves cosas como “InnoDB: Unable to lock”, “Permission denied” o “Port already in use”, ya sabes por dónde van los tiros. Es la forma más rápida de saber si el problema es de puerto, de permisos o de datos corruptos.
Si el log dice que una tabla está corrupta, puedes intentar repararla, pero muchas veces lo más sensato es exportar lo que puedas y reinstalar. No te compliques si los datos no son críticos.
¿Y si nada de esto funciona? Reinstalar XAMPP con cabeza
He visto gente que reinstala XAMPP cada vez que MySQL no arranca. Mal. Primero agota las opciones de arriba, porque reinstalar no garantiza nada si el problema es un puerto ocupado o un proceso zombi: al volver a instalar, el conflicto sigue ahí.
Si de verdad has probado todo y sigue sin ir, desinstala limpio. Antes haz copia de tus bases de datos (la carpeta xamppfiles/var/mysql tiene los datos, pero mejor exporta con mysqldump si puedes arrancar desde otra máquina). Luego borra XAMPP, reinicia el Mac y vuelve a instalar la versión más reciente desde la web oficial.
Consejo de alguien que ya perdió datos por esto: nunca trabajes con bases de datos importantes solo en XAMPP. Ten un dump actualizado en otro sitio. XAMPP es para desarrollar, no para producción.
Alternativas a XAMPP en Mac si te cansas del drama
Te lo digo claro: XAMPP en Mac es cómodo para empezar, pero arrastra años de decisiones raras. Si te pasa esto más de dos veces al mes, plantéate otras opciones. Laravel Valet es mucho más ligero y se lleva mejor con macOS. DBngin o TablePlus para bases de datos funcionan mejor. Y si necesitas Apache, Nginx y MySQL juntos, Docker con contenedores te da un entorno reproducible sin peleas de puertos.
Dicho esto, XAMPP sigue siendo la vía más rápida para tener PHP y MySQL funcionando en cinco minutos. Solo hay que saber que, de vez en cuando, se pone tonto. Y ahora ya sabes cómo devolverlo a la vida sin tirar el Mac por la ventana.
La clave de todo esto: cuando XAMPP no arranca MySQL en Mac, no te pongas a reinstalar a lo loco. Mira el puerto 3306, mata procesos zombis, revisa el my.cnf, comprueba permisos y lee el log. En ese orden. Yo tardé dos horas en aprenderlo, tú puedes tardar cinco minutos.