Fix: DevKinsta “error de MySQL” tras recrearse el datadir de MariaDB
Contexto: DevKinsta (macOS) falló al importar/crear el sitio Rebeca Pal con
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
al ejecutar mysql -u root -p****** -e "create database Rebeca_Pal;" (ver
~/Library/Logs/DevKinsta/main.log). Causa: el volumen Docker
devkinsta_db_data fue recreado (CreatedAt = fecha del fallo) y el datadir de
MariaDB quedó con root SIN password, mientras que DevKinsta persiste la suya
en ~/Library/Application Support/DevKinsta/config.json.
Diagnóstico:
- DevKinsta NO usa el MySQL del host (
/usr/local/mysql): usa MariaDB 10.5 en el contenedordevkinsta_db(Docker Desktop, puerto host 15100). - La password de root que espera DevKinsta está en
config.jsony también en el envMYSQL_ROOT_PASSWORDdel contenedor.
Procedimiento (verificado 2026-08-12):
PW=$(python3 -c "import json;print(json.load(open('$HOME/Library/Application Support/DevKinsta/config.json')).get('password',''))")
# alternativa: leer del contenedor → docker inspect devkinsta_db | grep MYSQL_ROOT_PASSWORD
docker exec devkinsta_db mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$PW'; ALTER USER 'root'@'[IP]' IDENTIFIED BY '$PW'; ALTER USER 'root'@'::1' IDENTIFIED BY '$PW'; FLUSH PRIVILEGES;"
# root@'%' no existe; el host interno del contenedor puede faltar:
docker exec devkinsta_db mysql -uroot -p"$PW" -e "DROP USER IF EXISTS 'root'@'e7e8f337b4d6'; CREATE USER 'root'@'e7e8f337b4d6' IDENTIFIED BY '$PW'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'e7e8f337b4d6' WITH GRANT OPTION; FLUSH PRIVILEGES;"
# verificar:
docker exec devkinsta_db mysql -uroot -p"$PW" -e "SHOW DATABASES;"Después: en la UI de DevKinsta, Reintentar la operación fallida (o eliminar el
sitio y re-importar desde Kinsta). NO crear la BD manualmente: el paso
database de la operación hace CREATE DATABASE Rebeca_Pal y fallaría si ya
existe. Nota: el datadir se recrea en cada pérdida del volumen → revisar si
había otros sitios locales (sus BDs se pierden).
Anexo 1 (retries): DevKinsta solo ejecuta CREATE DATABASE UNA vez por sitio;
los reintentos saltan ese paso. Si la BD se pierde a mitad de import, recrearla
vacía a mano: docker exec devkinsta_db mysql -uroot -p"$PW" -e "CREATE DATABASE Rebeca_Pal CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;".
Anexo 2 (import OK pero el sitio local redirige al staging): la BD importada
trae siteurl/home con el dominio remoto (stg-rebecapal-stg.kinsta.cloud).
Reemplazar con wp-cli (dentro del contenedor fpm; necesita --allow-root, y NO
reemplazar dominios parciales — usar la URL completa):
docker exec devkinsta_fpm sh -c 'cd /www/kinsta/public/rebecapal && \
wp --allow-root search-replace "https://stg-rebecapal-stg.kinsta.cloud" "https://rebecapal.local" --all-tables --precise && \
wp --allow-root cache flush && wp --allow-root transient delete --all'Ojo: si se reemplazó solo “kinsta.cloud”→“rebecapal.local” quedan prefijos
“stg-rebecapal-stg.” → limpiar con wp search-replace "stg-rebecapal-stg." "" --all-tables --precise.
Los archivos CSS de Elementor guardan URLs viejas: Regenerate CSS o se regeneran solos.