Voir les catégories

Serveur WordPress MySQL utilisant Query Streams, hébergé sur Siteground


Query Streams permet un accès direct aux bases de données MySQL des sites WordPress hébergés sur SiteGround. Les utilisateurs techniques peuvent ainsi créer et partager efficacement des requêtes SQL en temps réel via Excel et Google Sheets, sans VPN ni configuration de pare-feu complexe. Ce guide complet détaille les étapes essentielles pour connecter l'agent Query Streams à l'environnement MySQL de SiteGround, configurer les identifiants de base de données et créer des requêtes WordPress performantes pour l'extraction de données courantes, notamment les tables wp_posts, wp_users et les champs personnalisés. Une fois correctement configurées, ces requêtes peuvent être partagées en toute sécurité avec des utilisateurs non techniques, qui peuvent accéder facilement aux données WordPress en temps réel grâce à divers modules complémentaires de tableur. Ce processus élimine les exportations de bases de données fastidieuses et le partage d'identifiants sensibles, tout en garantissant une sécurité renforcée en lecture seule.

1. Connectez-vous et accédez à votre compte siteground.com.

Une fois connecté, accédez à l'option Outils du site. Allez dans Site -> MySQL

2. Cliquez sur l'onglet « À distance », vous aurez besoin de votre adresse IP externe.

Vous aurez besoin de l'adresse IP externe du réseau sur lequel votre agent Query Streams est exécuté. Pour la trouver, consultez des sites web comme WhatIsMyIP.com, IPChicken.com ou ipinfo.io. depuis le même réseau/emplacement où l'agent est installéAssurez-vous de vérifier l'adresse IP depuis l'emplacement réseau approprié, et non depuis un autre bureau, votre réseau domestique ou une connexion distante.

3. Cliquez sur l'onglet Utilisateurs et créez un nouvel utilisateur.

Modifiez cet utilisateur et veillez à ajouter une base de données au nouvel utilisateur.

Je recommande le mode lecture seule

Notez bien votre nom d'utilisateur, votre mot de passe et votre base de données ! Vous en aurez besoin.

4. Ouvrez votre agent réseau https://:1823

Cliquez sur Sources de données → Connexions → + Ajouter une connexion

Enregistrez votre configuration.

5. Ouvrez votre module complémentaire Google Sheets ou Excel

Dans cet exemple, nous utiliserons Google Sheets.

Vous devrez récupérer le préfixe de votre base de données, car la plupart des installations WordPress ont un préfixe aléatoire.

SELECT SUBSTRING_INDEX(table_name, '_', 1) as detected_prefix, COUNT(*) as table_count, GROUP_CONCAT( CASE WHEN table_name LIKE '%_posts' THEN 'posts' WHEN table_name LIKE '%_users' THEN 'users' WHEN table_name LIKE '%_options' THEN 'options' WHEN table_name LIKE '%_comments' THEN 'comments' WHEN table_name LIKE '%_postmeta' THEN 'postmeta' WHEN table_name LIKE '%_usermeta' THEN 'usermeta' END ) as wordpress_core_tables, CASE WHEN COUNT(*) >= 10 THEN 'Installation WordPress principale' WHEN COUNT(*) >= 5 THEN 'Installation WordPress possible' ELSE 'Tables de plugins/personnalisées' END comme installation_type DE information_schema.tables OÙ table_schema = DATABASE() ET table_name LIKE '%_%' GROUP BY SUBSTRING_INDEX(table_name, '_', 1) HAVING wordpress_core_tables IS NOT NULL ORDER BY table_count DESC;

Vous avez maintenant votre préfixe.

5. Voici quelques exemples de requêtes à exécuter. Veillez à remplacer le préfixe par celui de votre site.

.

Aperçu du trafic quotidien (30 derniers jours)

SELECT DATE(last_counter) as visit_date, COUNT(DISTINCT ip) as unique_visitors, COUNT(*) as total_visits, SUM(hits) as page_views, ROUND(SUM(hits) / COUNT(DISTINCT ip), 2) as pages_per_visitor, DAYNAME(last_counter) as day_of_week FROM nxj_statistics_visitor WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY) GROUP BY DATE(last_counter) ORDER BY visit_date DESC;

Répartition géographique des visiteurs

SELECT CASE WHEN location IS NULL OR location = '' THEN 'Emplacement inconnu' ELSE location END as visitor_location, COUNT(DISTINCT ip) as unique_visitors, COUNT(*) as total_visits, SUM(hits) as page_views, ROUND(COUNT(*) * 100.0 / ( SELECT COUNT(*) FROM nxj_statistics_visitor WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY) ), 2) as percentage_of_traffic, ROUND(SUM(hits) / COUNT(*), 2) as avg_pages_per_visit FROM nxj_statistics_visitor WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY) GROUP BY visitor_location ORDER BY unique_visitors DESC LIMIT 15;

Analyse du comportement des utilisateurs et des sessions

SELECT CASE WHEN hits = 1 THEN 'Rebond (1 page)' WHEN hits BETWEEN 2 AND 3 THEN 'Navigation rapide (2-3 pages)' WHEN hits BETWEEN 4 AND 7 THEN 'Engagé (4-7 pages)' WHEN hits BETWEEN 8 AND 15 THEN 'Très engagé (8-15 pages)' WHEN hits > 15 THEN 'Utilisateur avancé (15+ pages)' END as engagement_level, COUNT(*) as visitor_count, ROUND(COUNT(*) * 100.0 / ( SELECT COUNT(*) FROM nxj_statistics_visitor WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY) ), 2) as percentage, ROUND(AVG(hits), 2) as avg_pages_in_group, MIN(hits) as min_pages, MAX(hits) as max_pages FROM nxj_statistics_visitor WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY) GROUP BY engagement_level ORDER BY avg_pages_in_group;

Modes d'utilisation des appareils et des technologies

SELECT CASE WHEN agent LIKE '%Mobile%' OR agent LIKE '%Android%' OR agent LIKE '%iPhone%' OR agent LIKE '%BlackBerry%' THEN 'Mobile' WHEN agent LIKE '%Tablet%' OR agent LIKE '%iPad%' THEN 'Tablette' WHEN agent LIKE '%Windows%' OR agent LIKE '%Macintosh%' OR agent LIKE '%Linux%' OR agent LIKE '%Ubuntu%' THEN 'Ordinateur de bureau' WHEN agent LIKE '%bot%' OR agent LIKE '%Bot%' OR agent LIKE '%spider%' THEN 'Bot/Crawler' ELSE 'Appareil inconnu' END as device_type, CASE WHEN agent LIKE '%Chrome%' AND agent NOT LIKE '%Chromium%' THEN 'Chrome' WHEN agent LIKE '%Firefox%' ALORS 'Firefox' SI l'agent est de type '%Safari%' ET que l'agent n'est pas de type '%Chrome%' ALORS 'Safari' SI l'agent est de type 'ge%' ALORS 'Edge' SI l'agent est de type '%Opera%' ALORS 'Opera' SI l'agent est de type '%bot%' OU que l'agent est de type '%Bot%' ALORS 'Bot' SINON 'Autre navigateur' FIN comme browser_type, COUNT(*) comme visits, COUNT(DISTINCT ip) comme unique_visitors, SUM(hits) comme page_views, ROUND(AVG(hits), 2) comme avg_pages_per_visit, ROUND(COUNT(*) * 100.0 / ( SELECT COUNT(*) FROM nxj_statistics_visitor WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY) ), 2) as percentage_of_traffic 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;
Updated on 6 juillet 2025

Powered by BetterDocs