查看类别

使用查询流的 WordPress MySQL 服务器,由 Siteground 托管


Query Streams 允许直接访问托管在 SiteGround 上的 WordPress 网站的 MySQL 数据库,使技术用户能够通过 Excel 和 Google Sheets 高效地创建和共享实时 SQL 查询,而无需 VPN 或复杂的防火墙配置。本指南全面涵盖了将 Query Streams 代理连接到 SiteGround 的 MySQL 环境、配置必要的数据库凭据以及构建针对常见数据提取场景(包括 wp_posts、wp_users 和自定义字段表)的有效 WordPress 特定查询的关键步骤。正确配置后,这些查询可以安全地与非技术用户共享,他们可以通过各种电子表格插件轻松访问实时 WordPress 数据。此过程无需繁琐的数据库导出或敏感凭据共享,同时保持了强大的只读安全措施。

1. 登录并转到您的 siteground.com 帐户。

登录后,转到“站点工具”选项。转到“站点”->“MySQL”。

2. 点击“远程”选项卡,您需要输入您的外部 IP 地址。

您需要查询流代理运行所在网络的外部 IP 地址。要查找此地址,请访问 WhatIsMyIP.com、IPChicken.com 或 ipinfo.io 等网站。 从代理安装所在的同一网络/位置。请确保您是从正确的网络位置检查 IP 地址,而不是从其他办公室、家庭网络或远程连接检查。

3. 点击“用户”选项卡,创建一个新用户

编辑该用户时,务必为新用户添加数据库。

我建议只读

记下你的用户名、密码和数据库地址!你之后会用到它们。

4. 打开您的网络代理 https://:1823

点击“数据源”->“连接”->“+ 添加连接”

保存您的配置。

5. 打开您的 Google 表格或 Excel 插件

在这个例子中,我们将使用谷歌表格。

您需要获取数据库前缀,因为大多数 WordPress 安装都使用随机前缀。

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 'Primary WordPress Installation' WHEN COUNT(*) >= 5 THEN 'Possible WordPress Installation' ELSE 'Plugin/Custom Tables'从 information_schema.tables 表中选择 install_type 作为记录,条件是 table_schema = DATABASE() 且 table_name 类似于 '%_%',并按 SUBSTRING_INDEX(table_name, '_', 1) 分组,且 wordpress_core_tables 不为空,并按 table_count 降序排列。

现在您已经有了前缀。

5. 以下是一些示例查询语句。请务必将查找/替换前缀替换为您网站的前缀。

.

每日流量概览(过去 30 天)

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;

游客地理分布

SELECT CASE WHEN location IS NULL OR location = '' THEN '未知位置' 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;

用户行为与会话分析

SELECT CASE WHEN hits = 1 THEN '跳出(1 页)' WHEN hits BETWEEN 2 AND 3 THEN '快速浏览(2-3 页)' WHEN hits BETWEEN 4 AND 7 THEN '参与度高(4-7 页)' WHEN hits BETWEEN 8 AND 15 THEN '非常参与(8-15 页)' WHEN hits > 15 THEN '高级用户(15 页以上)' 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,从 nxj_statistics_visitor 表中选择 MIN(hits) 作为 min_pages,MAX(hits) 作为 max_pages,其中 last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY),按 engagement_level 分组,按 avg_pages_in_group 排序;

设备与技术使用模式

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 'Tablet' 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 'Unknown Device' END as device_type, CASE WHEN agent LIKE '%Chrome%' AND agent NOT LIKE '%Chromium%' THEN 'Chrome' WHEN agent LIKE '%Firefox%' THEN 'Firefox'当代理类型为 '%Safari%' 且代理类型不为 '%Chrome%' 时,则为 'Safari';当代理类型为 'ge%' 时,则为 'Edge';当代理类型为 '%Opera%' 时,则为 'Opera';当代理类型为 '%bot%' 或代理类型为 '%Bot%' 时,则为 'Bot';否则为 '其他浏览器'。结束,并定义 browser_type、visits、unique_visitors、page_views、avg_pages_per_visit 和 count(*) * 100.0 / (SELECT COUNT(*) FROM nxj_statistics_visitor WHERE last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY)), 2) 作为浏览器类型。从 nxj_statistics_visitor 表中选择 percentage_of_traffic,条件是 last_counter >= DATE_SUB(NOW(), INTERVAL 30 DAY) 且 agent 不为空,按 device_type 和 browser_type 分组,按 visits 降序排列,限制为 20。
更新 2025 年 7 月 6 日

Powered by BetterDocs