Ver categorías

Servidor MySQL de WordPress que utiliza Query Streams, alojado en Siteground


Query Streams permite el acceso directo a la base de datos MySQL de los sitios de WordPress alojados en SiteGround, lo que permite a los usuarios con conocimientos técnicos crear y compartir de forma eficiente consultas SQL en tiempo real a través de Excel y Google Sheets sin necesidad de una VPN ni de una configuración compleja del cortafuegos. Esta guía completa abarca los pasos esenciales para conectar el agente de Query Streams al entorno MySQL de SiteGround, configurar las credenciales de base de datos necesarias y crear consultas eficaces específicas para WordPress en situaciones habituales de extracción de datos, incluyendo las tablas wp_posts, wp_users y de campos personalizados. Una vez configuradas correctamente, estas consultas se pueden compartir de forma segura con usuarios sin conocimientos técnicos, quienes pueden acceder fácilmente a datos de WordPress en tiempo real a través de diversos complementos de hojas de cálculo. Este proceso elimina la necesidad de realizar engorrosas exportaciones de bases de datos o compartir credenciales confidenciales, al tiempo que mantiene sólidas medidas de seguridad de solo lectura.

1. Inicia sesión y ve a tu cuenta de SiteGround.com.

Una vez que hayas iniciado sesión, ve a la opción «Herramientas del sitio». Ve a Sitio -> MySQL

2. Haz clic en la pestaña «Remoto»; necesitarás tu dirección IP externa.

Necesitarás la dirección IP externa de la red en la que se está ejecutando tu agente de Query Streams. Para averiguarla, visita sitios web como WhatIsMyIP.com, IPChicken.com o ipinfo.io desde la misma red o ubicación en la que está instalado el agente. Asegúrate de comprobar la dirección IP desde la ubicación de red correcta, y no desde otra oficina, la red doméstica o una conexión remota.

3. Haz clic en la pestaña «Usuarios» y crea un nuevo usuario

Edita ese usuario y asegúrate de asignarle una base de datos.

Recomiendo el modo de solo lectura

¡Anota tu nombre de usuario, contraseña y base de datos! Los necesitarás.

4. Abre tu agente de red https://:1823

Haz clic en «Fuentes de datos» → «Conexiones» → «+ Añadir conexión»

Guarda la configuración.

5. Abre tu complemento de Google Sheets o Excel

En este ejemplo, utilizaremos Google Sheets

Tendrás que averiguar el prefijo de tu base de datos, ya que la mayoría de las instalaciones de WordPress tienen un prefijo aleatorio.

SELECT 
    SUBSTRING_INDEX(nombre_tabla, '_', 1) AS prefijo_detectado,
    COUNT(*) AS recuento_tablas,
    GROUP_CONCAT(
        CASE 
            WHEN nombre_tabla LIKE '%_posts' THEN 'posts'
            WHEN nombre_tabla LIKE '%_users' THEN 'users'
            WHEN nombre_tabla LIKE '%_options' THEN 'options'
            WHEN nombre_tabla LIKE '%_comments' THEN 'comments'
            WHEN nombre_tabla LIKE '%_postmeta' THEN 'postmeta'
            WHEN nombre_tabla LIKE '%_usermeta' THEN 'usermeta'
        END
    ) como wordpress_core_tables,
    CASE 
        WHEN COUNT(*) >= 10 THEN 'Instalación principal de WordPress'
        WHEN COUNT(*) >= 5 THEN 'Posible instalación de WordPress' 
        ELSE 'Tablas de plugins/personalizadas'
    END como installation_type
FROM information_schema.tables 
WHERE table_schema = DATABASE()
AND table_name LIKE '%_%'
GROUP BY SUBSTRING_INDEX(table_name, '_', 1)
HAVING wordpress_core_tables IS NOT NULL
ORDER BY table_count DESC;

Ya tienes tu prefijo.

5. A continuación te ofrecemos algunas consultas de ejemplo que puedes ejecutar. Asegúrate de buscar y sustituir el prefijo por el de tu sitio web.

.

Resumen diario del tráfico (últimos 30 días)

SELECT 
    DATE(last_counter) como fecha_visita,
    COUNT(DISTINCT ip) como visitantes_únicos,
    COUNT(*) como visitas_totales,
    SUM(hits) como visitas_a_páginas,
    REDONDEAR(SUMA(visitas) / CONTAR(IP_DISTINTAS), 2) como páginas_por_visitante,
    NOMBRE_DEL_DÍA(último_contador) como día_de_la_semana
DE nxj_statistics_visitor 
DONDE último_contador >= FECHA_PASA(HOY(), INTERVALO 30 DÍAS)
AGRUPAR POR FECHA(último_contador)
ORDENAR POR fecha_visita DESC;

Distribución geográfica de los visitantes

SELECT 
    CASE 
        WHEN location IS NULL OR location = '' THEN 'Ubicación desconocida'
        ELSE location 
    END as visitor_location,
    COUNT(DISTINCT ip) as unique_visitors,
    COUNT(*) as total_visits,
    SUM(hits) as page_views,
    REDONDEAR(CONTAR(*) * 100,0 / (
        SELECCIONAR CONTAR(*) DE nxj_statistics_visitor 
        DONDE último_contador >= FECHA_SUB(AHORA(), INTERVALO 30 DÍAS)
    ), 2) como porcentaje_de_tráfico,
    ROUND(SUM(hits) / COUNT(*), 2) como promedio_de_páginas_por_visita
FROM nxj_statistics_visitor
WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY)
AGRUPAR POR ubicación_del_visitante
ORDENAR POR visitantes_únicos DESC
LÍMITE 15;

Análisis del comportamiento de los usuarios y de las sesiones

SELECT 
    CASE 
        WHEN visitas = 1 THEN 'Rebote (1 página)'
        WHEN visitas ENTRE 2 Y 3 THEN 'Navegación rápida (2-3 páginas)'
        WHEN visitas ENTRE 4 Y 7 THEN 'Interés (4-7 páginas)'
        WHEN visitas ENTRE 8 Y 15 THEN 'Muy interesado (8-15 páginas)'
        WHEN visitas > 15 THEN 'Usuario avanzado (más de 15 páginas)'
    FIN como nivel_de_interacción,
    CONTAR(*) como recuento_de_visitantes,
    REDONDEAR(CONTAR(*) * 100,0 / (
        SELECCIONAR CONTAR(*) DE nxj_statistics_visitor 
        DONDE último_contador >= FECHA_SUB(AHORA(), INTERVALO 30 DÍAS)
    ), 2) como porcentaje,
    ROUND(AVG(visitas), 2) como promedio_de_páginas_en_el_grupo,
    MIN(visitas) como mín_páginas,
    MAX(visitas) como máx_páginas
FROM nxj_statistics_visitor
WHERE último_contador >= DATE_SUB(NOW(), INTERVAL 30 DAY)
AGRUPAR POR nivel_de_interacción
ORDENAR POR promedio_de_páginas_en_el_grupo;

Patrones de uso de dispositivos y tecnologías

SELECT 
 CASE 
 WHEN agent LIKE '%Mobile%' OR agent LIKE '%Android%' OR agent LIKE '%iPhone%' OR agent LIKE '%BlackBerry%' THEN 'Móvil'
 WHEN agent LIKE '%Tablet%' OR agent LIKE '%iPad%' THEN 'Tableta'
 WHEN agent LIKE '%Windows%' OR agent LIKE '%Macintosh%' OR agent LIKE '%Linux%' OR agent LIKE '%Ubuntu%' THEN 'Desktop'
 WHEN agent LIKE '%bot%' OR agent LIKE '%Bot%' OR agent LIKE '%spider%' THEN 'Bot/Crawler'
 ELSE 'Dispositivo desconocido'
 FIN como tipo_de_dispositivo,
 
 CASO 
 CUANDO agente ES IGUAL A '%Chrome%' Y agente NO ES IGUAL A '%Chromium%' ENTONCES 'Chrome'
 CUANDO agente ES IGUAL A '%Firefox%' ENTONCES 'Firefox'
 CUANDO agente ES IGUAL A '%Safari%' Y agente NO ES IGUAL A '%Chrome%' ENTONCES 'Safari'
 CUANDO agente ES IGUAL A 'ge%' ENTONCES 'Edge'
 CUANDO agente ES IGUAL A '%Opera%' ENTONCES 'Opera'
 CUANDO agente ES IGUAL A '%bot%' O agente ES IGUAL A '%Bot%' ENTONCES 'Bot'
 ELSE 'Otro navegador'
 FIN como tipo_navegador,
 
 COUNT(*) como visitas,
 COUNT(DISTINCT ip) como visitantes_únicos,
 SUM(hits) como visitas_a_páginas,
 REDONDEAR(PROMEDIO(visitas), 2) como promedio_de_páginas_por_visita,
 REDONDEAR(CONTAR(*) * 100,0 / (
 SELECCIONAR CONTAR(*) DE nxj_statistics_visitor 
 DONDE último_contador >= FECHA_SUB(AHORA(), INTERVALO 30 DÍAS)
 ), 2) como porcentaje_de_tráfico
FROM nxj_statistics_visitor
WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY)
 AND agent IS NOT NULL
GROUP BY device_type, browser_type
ORDER BY visits DESC
LIMIT 20;
Actualizado el 6 de julio de 2025

Funciona con BetterDocs