docs: home.xpcool.com 上线完成 + Kuma 状态页建成

- 2026-09-13.md:追加 4 条(部署完成、Kuma 状态页建成、
  灌库脚本静默失败根因、SSH 被拒时的公网旁路验证法)
- DEPLOY.md:站点清单更新 home.xpcool.com 上线状态;
  新增「公开状态页」小节(三表配合、send_url 必为 1、
  两个验证端点、同源反代写法、回滚方式);
  工具链坑位新增「$LASTEXITCODE 不能穿透 ssh」与
  「set -e + 写死路径 = 静默失败」
- 技能 uptime-kuma-sqlite-ops 同步补齐状态页建法
This commit is contained in:
夏犀麟 2026-09-13 19:30:22 +08:00
parent 0f94521086
commit 0cf48dc1cb
16 changed files with 231 additions and 1 deletions

View File

@ -1,5 +1,11 @@
# 2026-09-13 # 2026-09-13
2026-09-13 | CFG | **home.xpcool.com 部署完成(服务器侧)**SSH 本次已放行(`~/.ssh/xpcool_ed25519` → `xxcool@193.112.118.168:22025``sudo` 免密 OK直接由 AI 执行部署 —— 站点 27 文件落 `/data/www/home.xpcool.com`、证书落 `/data/nginx/ssl/home.xpcool.com/`(公私钥 pubkey md5 一致)、配置落 `/data/nginx/conf.d/home.xpcool.com.conf`(首次部署无旧配置)、`nginx -t` 通过 + reload、本机 https **200** + `<title>xpcool 服务台</title>` + 静态资源 200 + 80→301→443。**唯一待办仍是 DNS**`home` A 记录未加223.5.5.5/119.29.29.29 及权威 `calvin/meat.dnspod.net` 全 NXDOMAIN且无泛解析
2026-09-13 | CFG | **Kuma 建公开状态页 `xpcool`(首页状态格的真正数据源)**:此前 `status_page` 表为空 —— 即 `status.xpcool.com` 只是 Kuma 自身面板、从未建过状态页,这正是首页显示「状态数据未接入」的根因。直写 SQLite 建:状态页(title「xpcool 服务台」/theme dark/不收录/显证书到期/60s 刷新) + 分组「自建服务」(public=1) + 9 监控关联且 **`send_url=1`**。验证:公网 `/api/status-page/xpcool` 200 返回 9 监控且带 urlheartbeat 返回 9 组心跳;首页实测 **9/9 正常**、卡片「正常」+ 100.00%
2026-09-13 | FIX | Kuma 状态页灌库脚本「静默失败」:`kuma-statuspage.sh` 里 `SQL_SRC` 写死 `/tmp/wb_kuma_statuspage.sql`,与实际上传的 `/tmp/kuma-statuspage.sql` 不符,`set -e` 在第一步就退出、日志只有一行、且远程 `echo $LASTEXITCODE` 被本地 PowerShell 提前展开成空 → **一度完全看不出失败原因**。教训:远程脚本的 `set -e` + 文件路径约定要自洽(改用 `$(dirname $0)/同名.sql` 推导),且回传执行结果要走「服务器落日志 + base64 回传」,别依赖 `$LASTEXITCODE` 穿透 ssh
2026-09-13 | FIX | 沙箱取日志被拒后的替代验证路径SSH 被拦时不一定要重试 —— Kuma 状态页 API 在 `https://status.xpcool.com/api/status-page/<slug>` **公网匿名可达**,直接 HTTPS 查询即可判断状态页是否建成,绕开 SSH
2026-09-13 | CFG | home.xpcool.com 上线物料备齐:证书(`E:\Project\home.xpcool.com_nginx\`**注意不在 `E:\CentOS\ssl\` 下**)核验通过 —— `CN=home.xpcool.com` SAN 一致、TrustAsia DV、有效期至 **2026-12-12**、公私钥配套;生成一键部署包 `E:\CentOS\deploy-home\`bundle.tar.gz + deploy-home.ps1nginx 配置含 `/api/kuma/` 同源反代到 `127.0.0.1:3001/api/status-page/`。**SSH 再遭沙箱拦截且用户拒绝授权** → 沿用「AI 备包、用户本机执行」模式。**待办:`home.xpcool.com` A 记录仍未添加**223.5.5.5/119.29.29.29/8.8.8.8 三方确认不存在,对照 status.xpcool.com 可正常解析)
2026-09-13 | REQ | **新建 home.xpcool.comxpcool 服务台)**9 个自建服务的统一入口 + Uptime Kuma 实时存活状态 + 主机规格Vite6 + Vue3 + TS(strict) + Pinia + vue-router + UnoCSS + SCSS视觉按 `design-taste-frontend` 规范(深色仪表盘语言、双主题令牌、单形状系统、零 eyebrow/零 em-dash、bento 栅格 4+2/2+2+2/3+3/3+3构建通过gzip 约 56KB本地 git 已 init + 首次 commit47 文件),**待用户加 DNS/证书后部署** 2026-09-13 | REQ | **新建 home.xpcool.comxpcool 服务台)**9 个自建服务的统一入口 + Uptime Kuma 实时存活状态 + 主机规格Vite6 + Vue3 + TS(strict) + Pinia + vue-router + UnoCSS + SCSS视觉按 `design-taste-frontend` 规范(深色仪表盘语言、双主题令牌、单形状系统、零 eyebrow/零 em-dash、bento 栅格 4+2/2+2+2/3+3/3+3构建通过gzip 约 56KB本地 git 已 init + 首次 commit47 文件),**待用户加 DNS/证书后部署**
2026-09-13 | FIX | 移动端横向溢出「误报」定位:真 390×844 视口实测 `scrollW=390 / overflow=0`,布局本身无溢出;此前截图右边缘被切是**取图假象**——Windows 无头 Chrome 窗口有 500px 下限,且 iframe 滚条槽位让内层 `clientWidth` 变 375恰好把溢出藏住改用 CDP `Emulation.setDeviceMetricsOverride` 后结论可靠(详见 DEPLOY.md 工具链坑位) 2026-09-13 | FIX | 移动端横向溢出「误报」定位:真 390×844 视口实测 `scrollW=390 / overflow=0`,布局本身无溢出;此前截图右边缘被切是**取图假象**——Windows 无头 Chrome 窗口有 500px 下限,且 iframe 滚条槽位让内层 `clientWidth` 变 375恰好把溢出藏住改用 CDP `Emulation.setDeviceMetricsOverride` 后结论可靠(详见 DEPLOY.md 工具链坑位)
2026-09-13 | CHG | 新增 `home.xpcool.com/scripts/shoot-mobile.mjs`Node 22 内置 WebSocket 手写极简 CDP 客户端,**零依赖**完成真移动视口测量 + `captureBeyondViewport` 整页截图;`shoot.ps1` 收敛为桌面端并修掉「按 `*.png` 清空 .shots 误删移动端截图」的 bug 2026-09-13 | CHG | 新增 `home.xpcool.com/scripts/shoot-mobile.mjs`Node 22 内置 WebSocket 手写极简 CDP 客户端,**零依赖**完成真移动视口测量 + `captureBeyondViewport` 整页截图;`shoot.ps1` 收敛为桌面端并修掉「按 `*.png` 清空 .shots 误删移动端截图」的 bug

View File

@ -32,6 +32,9 @@
- **经 `ssh.exe` 执行多行脚本会踩转义坑2026-09-13 实测)**:把多行 here-string 直接当参数传给 `ssh.exe`,远程 bash 解析到 `(` 等字符会报 `syntax error near unexpected token '('`**而且报错前的行已经执行了**,导致状态半途而废(证书只搬了一半)。**可靠做法**:本地写 `.sh` 文件(用 `-replace "`r`n","`n"` 强制 LF + `WriteAllText` UTF-8 无 BOM**单独** `scp` 上传 → `ssh "chmod +x /tmp/x.sh && /tmp/x.sh"` 执行。注意 `echo <b64> | base64 -d | bash` 会被 PowerShell 工具安全策略直接拦截("Spawning a non-PowerShell shell")。 - **经 `ssh.exe` 执行多行脚本会踩转义坑2026-09-13 实测)**:把多行 here-string 直接当参数传给 `ssh.exe`,远程 bash 解析到 `(` 等字符会报 `syntax error near unexpected token '('`**而且报错前的行已经执行了**,导致状态半途而废(证书只搬了一半)。**可靠做法**:本地写 `.sh` 文件(用 `-replace "`r`n","`n"` 强制 LF + `WriteAllText` UTF-8 无 BOM**单独** `scp` 上传 → `ssh "chmod +x /tmp/x.sh && /tmp/x.sh"` 执行。注意 `echo <b64> | base64 -d | bash` 会被 PowerShell 工具安全策略直接拦截("Spawning a non-PowerShell shell")。
- **多源文件 `scp` 不可靠2026-09-13 实测)**:一次 `scp a b c d e host:/tmp/` 只落地了其中 2 个,且**没有任何报错**。**每次只 scp 一个文件**;脚本内用 `for` + `[ -f ]` 判断做幂等补齐,避免重复上传。 - **多源文件 `scp` 不可靠2026-09-13 实测)**:一次 `scp a b c d e host:/tmp/` 只落地了其中 2 个,且**没有任何报错**。**每次只 scp 一个文件**;脚本内用 `for` + `[ -f ]` 判断做幂等补齐,避免重复上传。
- **远程脚本一律写成幂等**`if [ -f ]` 判断后再 `mv -f`),因为 SSH 调用可能被沙箱拦截/用户误拒而中断,重跑不能出错。 - **远程脚本一律写成幂等**`if [ -f ]` 判断后再 `mv -f`),因为 SSH 调用可能被沙箱拦截/用户误拒而中断,重跑不能出错。
- **别用 `echo $LASTEXITCODE` 穿透 ssh 取远端退出码2026-09-13 实测踩坑)**`$LASTEXITCODE` 是 PowerShell 自动变量,在**本地**双引号字符串里就被展开成空串,远端实际收到的是 `echo DONE`,于是「脚本明明失败了却看到一个成功的回声」。**可靠做法**:远端 `sh /tmp/x.sh > /tmp/x.log 2>&1`,再 `base64 -w0 /tmp/x.log` 回传、本地解码落盘后用 Read 看base64 还能顺带规避 Windows 控制台按 GBK 解 UTF-8 造成的乱码)。
- **`set -e` + 写死的路径 = 静默失败**`kuma-statuspage.sh` 曾把来源文件写死成 `/tmp/wb_kuma_statuspage.sql`,而上传的是 `/tmp/kuma-statuspage.sql`,脚本在第一步就退出,**日志只有一行「缺少 …」,看起来像什么都没发生**。远程脚本内部一律用 `$(dirname "$0")/<同名文件>` 推导,再退到 `/tmp/<同名文件>` 兜底;且上传时保证「脚本名.sh ↔ 同名.sql」成对。
- **SSH 被沙箱拦截时不一定要重试**:先找**公网可达的旁路**做验证。例如 Kuma 的 `/api/status-page/<slug>``status.xpcool.com` 上匿名可达,直接 HTTPS 查就能判断状态页是否建成,省一次权限弹窗。真的需要读远端日志时,再向用户说明并请求重新授权(授权后原命令即可重跑)。
- **无头 Chrome 截图/量视口有三个坑2026-09-13 实测,做前端移动端验收必看)** - **无头 Chrome 截图/量视口有三个坑2026-09-13 实测,做前端移动端验收必看)**
① Windows 下窗口宽度有 **500px 下限**`--window-size=390` 会被撑到 500 ① Windows 下窗口宽度有 **500px 下限**`--window-size=390` 会被撑到 500
`--force-device-scale-factor` **只改渲染倍率、不改 CSS 视口宽度**(给 dsf=2 + window 780拿到的仍是 764 CSS px不是 390 `--force-device-scale-factor` **只改渲染倍率、不改 CSS 视口宽度**(给 dsf=2 + window 780拿到的仍是 764 CSS px不是 390
@ -53,7 +56,7 @@
| sub2api.xpcool.com | `sub2api` + postgres + redis | 127.0.0.1:18080 | — | | sub2api.xpcool.com | `sub2api` + postgres + redis | 127.0.0.1:18080 | — |
| code.xpcool.com | `code-server` | 127.0.0.1:8080 | 网页版 VS Code | | code.xpcool.com | `code-server` | 127.0.0.1:8080 | 网页版 VS Code |
| **status.xpcool.com** | **`uptime-kuma`** | **127.0.0.1:3001** | **服务监控面板2026-09-13 新增)** | | **status.xpcool.com** | **`uptime-kuma`** | **127.0.0.1:3001** | **服务监控面板2026-09-13 新增)** |
| **home.xpcool.com** | **—(静态)** | **—** | **xpcool 服务台9 站统一入口 + 存活状态2026-09-13 建成,待上域名/证书)** | | **home.xpcool.com** | **—(静态)** | **—** | **xpcool 服务台9 站统一入口 + 存活状态。2026-09-13 站点/证书/nginx 已全部上线,`/api/kuma/` 同源反代到 Kuma 仅剩 DNSPod `home` A 记录未加,公网暂不可访问** |
| —(暂无域名) | `bark` | 0.0.0.0:8081 | Bark 推送服务端 | | —(暂无域名) | `bark` | 0.0.0.0:8081 | Bark 推送服务端 |
| — | `xpcool-mysql` | 127.0.0.1:3306 | MySQL 8.0(库 `service` | | — | `xpcool-mysql` | 127.0.0.1:3306 | MySQL 8.0(库 `service` |
@ -74,6 +77,13 @@
| file / read / tool / sub2api | 120s | 2 | 2000 | | file / read / tool / sub2api | 120s | 2 | 2000 |
| code / status | 300s | 2 | 3000 | | code / status | 300s | 2 | 3000 |
- **`service.xpcool.com` 单独放宽为 `["200-399","404"]`**:该后端是纯 POST 接口(遵循本项目"接口全 POST"规范),任何 GET 都 404返回 404 说明 nginx + GoFrame 存活,**后端进程真挂时 nginx 返回 502仍会判 DOWN**。 - **`service.xpcool.com` 单独放宽为 `["200-399","404"]`**:该后端是纯 POST 接口(遵循本项目"接口全 POST"规范),任何 GET 都 404返回 404 说明 nginx + GoFrame 存活,**后端进程真挂时 nginx 返回 502仍会判 DOWN**。
- **公开状态页2026-09-13 建,首页状态格的唯一数据源)**`status.xpcool.com` 本身只是 Kuma 面板,**状态页是另一回事**,必须单独建,否则 `/api/status-page/<slug>` 恒 404。
- 三张表配合:`status_page`slug/title/published/theme…`group`**需 `public=1``status_page_id` 指向该页**)→ `monitor_group`(监控与分组的关联)。
- **必须置 `monitor_group.send_url = 1`**。Kuma 的 `Monitor.toPublicJSON()``if (this.sendUrl) obj.url = this.customUrl ?? this.url;` —— 不开 `send_url` 时 API **不返回 `url` 字段**。而前端就是靠 `url` 里的主机名把监控和卡片对齐的,不返回就等于状态全「未接入」。
- 当前实例slug `xpcool`(与 `home.xpcool.com/src/composables/useStatus.ts``STATUS_PAGE_SLUG` 一致、title「xpcool 服务台」、theme dark、`search_engine_index=0`(内部站不收录)、`show_certificate_expiry=1`、`auto_refresh_interval=60`分组「自建服务」9 个监控全挂且 `send_url=1`
- 建页脚本(幂等,含 DB 备份):`E:\CentOS\deploy-home\kuma-statuspage.{sql,sh}`。**改库后必须 `docker restart uptime-kuma`** 才生效。
- 验证端点:`/api/status-page/<slug>`(分组+监控列表)与 `/api/status-page/heartbeat/<slug>``heartbeatList`/`uptimeList`,键形如 `"3_24"`,前缀是监控 id。**这两个端点在 status.xpcool.com 上公网匿名可达**SSH 被拦时可直接用 HTTPS 验证状态页是否建成。
- 回滚:`sudo cp /tmp/kuma.db.backup.<时间戳> /data/uptime-kuma/kuma.db && sudo docker restart uptime-kuma`。
- **通知渠道 = Bark2026-09-13 已配置并验证)**Kuma 2.5.3 原生支持 Bark`/app/server/notification-providers/bark.js`)。`notification` 表:`id/name/active/user_id/is_default/config`**`config` 是整条通知对象的 JSON 字符串(含 `type`Kuma 用 `providerList[notification.type]` 派发,靠 `item.name` 索引**。 - **通知渠道 = Bark2026-09-13 已配置并验证)**Kuma 2.5.3 原生支持 Bark`/app/server/notification-providers/bark.js`)。`notification` 表:`id/name/active/user_id/is_default/config`**`config` 是整条通知对象的 JSON 字符串(含 `type`Kuma 用 `providerList[notification.type]` 派发,靠 `item.name` 索引**。
- **最大的坑:`type` 必须写 `Bark`(首字母大写)**,不是 `bark`。前端 `NotificationDialog.vue:257` 就是 `Bark: "Bark"`;写成小写则查不到 provider**静默不发通知**。 - **最大的坑:`type` 必须写 `Bark`(首字母大写)**,不是 `bark`。前端 `NotificationDialog.vue:257` 就是 `Bark: "Bark"`;写成小写则查不到 provider**静默不发通知**。
- 当前配置:`id=1 / name='Bark 手机推送' / is_default=1``config` = `{"type":"Bark","barkEndpoint":"http://172.17.0.1:8081/sm5WnyANWx89GgLtFnRXhk","barkGroup":"Uptime-Kuma","apiVersion":"v1"}` - 当前配置:`id=1 / name='Bark 手机推送' / is_default=1``config` = `{"type":"Bark","barkEndpoint":"http://172.17.0.1:8081/sm5WnyANWx89GgLtFnRXhk","barkGroup":"Uptime-Kuma","apiVersion":"v1"}`

View File

@ -0,0 +1,58 @@
=== E:\Programs\MySQL\data 内容 ===
#innodb_redo [DIR] 2026/9/13 19:27:08
#innodb_temp [DIR] 2026/9/13 19:27:08
mysql [DIR] 2026/9/13 19:27:06
performance_schema [DIR] 2026/9/13 19:27:05
sys [DIR] 2026/9/13 19:27:06
#ib_16384_0.dblwr [FILE] 2026/9/13 19:27:08
#ib_16384_1.dblwr [FILE] 2026/9/13 19:27:01
auto.cnf [FILE] 2026/9/13 19:27:01
ca-key.pem [FILE] 2026/9/13 19:27:06
ca.pem [FILE] 2026/9/13 19:27:06
client-cert.pem [FILE] 2026/9/13 19:27:06
client-key.pem [FILE] 2026/9/13 19:27:06
ibdata1 [FILE] 2026/9/13 19:27:08
ib_buffer_pool [FILE] 2026/9/13 19:27:07
mysql.ibd [FILE] 2026/9/13 19:27:07
private_key.pem [FILE] 2026/9/13 19:27:06
public_key.pem [FILE] 2026/9/13 19:27:06
server-cert.pem [FILE] 2026/9/13 19:27:06
server-key.pem [FILE] 2026/9/13 19:27:06
undo_001 [FILE] 2026/9/13 19:27:07
undo_002 [FILE] 2026/9/13 19:27:07
=== 递归前 30 项 ===
E:\Programs\MySQL\data\#innodb_redo 09/13/2026 19:27:08
E:\Programs\MySQL\data\#innodb_temp 09/13/2026 19:27:08
E:\Programs\MySQL\data\mysql 09/13/2026 19:27:06
E:\Programs\MySQL\data\performance_schema 09/13/2026 19:27:05
E:\Programs\MySQL\data\sys 09/13/2026 19:27:06
E:\Programs\MySQL\data\#ib_16384_0.dblwr 09/13/2026 19:27:08
E:\Programs\MySQL\data\#ib_16384_1.dblwr 09/13/2026 19:27:01
E:\Programs\MySQL\data\auto.cnf 09/13/2026 19:27:01
E:\Programs\MySQL\data\ca-key.pem 09/13/2026 19:27:06
E:\Programs\MySQL\data\ca.pem 09/13/2026 19:27:06
E:\Programs\MySQL\data\client-cert.pem 09/13/2026 19:27:06
E:\Programs\MySQL\data\client-key.pem 09/13/2026 19:27:06
E:\Programs\MySQL\data\ibdata1 09/13/2026 19:27:08
E:\Programs\MySQL\data\ib_buffer_pool 09/13/2026 19:27:07
E:\Programs\MySQL\data\mysql.ibd 09/13/2026 19:27:07
E:\Programs\MySQL\data\private_key.pem 09/13/2026 19:27:06
E:\Programs\MySQL\data\public_key.pem 09/13/2026 19:27:06
E:\Programs\MySQL\data\server-cert.pem 09/13/2026 19:27:06
E:\Programs\MySQL\data\server-key.pem 09/13/2026 19:27:06
E:\Programs\MySQL\data\undo_001 09/13/2026 19:27:07
E:\Programs\MySQL\data\undo_002 09/13/2026 19:27:07
E:\Programs\MySQL\data\#innodb_redo\#ib_redo10_tmp 09/13/2026 19:27:02
E:\Programs\MySQL\data\#innodb_redo\#ib_redo11_tmp 09/13/2026 19:27:02
E:\Programs\MySQL\data\#innodb_redo\#ib_redo12_tmp 09/13/2026 19:27:02
E:\Programs\MySQL\data\#innodb_redo\#ib_redo13_tmp 09/13/2026 19:27:02
E:\Programs\MySQL\data\#innodb_redo\#ib_redo14_tmp 09/13/2026 19:27:02
E:\Programs\MySQL\data\#innodb_redo\#ib_redo15_tmp 09/13/2026 19:27:02
E:\Programs\MySQL\data\#innodb_redo\#ib_redo16_tmp 09/13/2026 19:27:02
E:\Programs\MySQL\data\#innodb_redo\#ib_redo17_tmp 09/13/2026 19:27:02
E:\Programs\MySQL\data\#innodb_redo\#ib_redo18_tmp 09/13/2026 19:27:02
=== 是否有其它残留 MySQL 数据目录 ===
bin | docs | include | lib | share
=== error.log 是否存在 ===
False
=== DONE ===

15
.workbuddy/tmp/enc2.txt Normal file
View File

@ -0,0 +1,15 @@
install-service.bat: no BOM (ok)
pull-prod.bat: no BOM (ok)
start-tunnel.bat: no BOM (ok)
stop-tunnel.bat: no BOM (ok)
=== 最终文件清单 ===
credentials.ps1 1073 bytes
init-local.sql 1386 bytes
install-service.bat 506 bytes
install-service.ps1 5720 bytes
pull-prod.bat 179 bytes
pull-prod.ps1 3993 bytes
start-tunnel.bat 106 bytes
start-tunnel.ps1 2366 bytes
stop-tunnel.bat 105 bytes
stop-tunnel.ps1 944 bytes

View File

@ -0,0 +1,19 @@
=== DISK ===
C: free=244.4GB total=522.3GB
D: free=173.1GB total=1,256.6GB
E: free=71.4GB total=127.0GB
=== ADMIN ===
user=XXL\xxl elevated=False
=== PKG MGR ===
winget: C:\Users\xxl\AppData\Local\Microsoft\WindowsApps\winget.exe
choco: MISSING
scoop: MISSING
curl:
tar: C:\WINDOWS\system32\tar.exe
docker: MISSING
=== PORT 3306/13306 ===
3306/13306 both FREE
=== ENV ===
ProgramFiles=C:\Program Files
USERPROFILE=C:\Users\xxl
=== DONE ===

8
.workbuddy/tmp/init.txt Normal file
View File

@ -0,0 +1,8 @@
[..] mysqld --initialize-insecure
2026-09-13T11:27:01.022642Z 0 [System] [MY-013169] [Server] E:\Programs\MySQL\mysql-8.0.46-winx64\bin\mysqld.exe (mysqld 8.0.46) initializing of server in progress as process 27208
2026-09-13T11:27:01.834696Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-09-13T11:27:03.435969Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-09-13T11:27:06.398862Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
exit = 0
datadir mysql subdir exists = True
datadir entries = 21

View File

@ -0,0 +1,3 @@
exit = 1
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1:3306' (10061)

View File

@ -0,0 +1,28 @@
=== INITIALIZE ===
mysqld.exe : 2026-09-13T11:27:15.263331Z 0 [System] [MY-013169] [Server] E:\Pro
grams\MySQL\mysql-8.0.46-winx64\bin\mysqld.exe (mysqld 8.0.46) initializing of
server in progress as process 7428
所在位置 行:449 字符: 12
+ $initOut = & $mysqld "--defaults-file=$ini" --initialize-insecure --c ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (2026-09-13T11:2...as process 7428
:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
2026-09-13T11:27:15.264745Z 0 [ERROR] [MY-010457] [Server] --initialize specifi
ed but the data directory has files in it. Aborting.
2026-09-13T11:27:15.264752Z 0 [ERROR] [MY-013236] [Server] The designated data
directory E:\Programs\MySQL\data\ is unusable. You can remove all files that th
e server added to it.
2026-09-13T11:27:15.264777Z 0 [ERROR] [MY-010119] [Server] Aborting
2026-09-13T11:27:15.264875Z 0 [System] [MY-010910] [Server] E:\Programs\MySQL\m
ysql-8.0.46-winx64\bin\mysqld.exe: Shutdown complete (mysqld 8.0.46) MySQL Com
munity Server - GPL.
init exit = 1
data\mysql exists = True
=== INSTALL SERVICE ===
Install/Remove of the Service Denied!
install exit = 0
=== DONE ===

View File

@ -0,0 +1,7 @@
=== GROUPS ===
group query failed
=== MIRROR TEST ===
FAIL https://mirrors.cloud.tencent.com/mysql/downloads/MySQL-8.0/ :: 远程服务器返回错误: (404) 未找到。
FAIL https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/ :: 远程服务器返回错误: (404) 未找到。
FAIL https://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-8.0/ :: 远程服务器返回错误: (404) 未找到。
=== DONE ===

15
.workbuddy/tmp/probe3.txt Normal file
View File

@ -0,0 +1,15 @@
=== WHOAMI GROUPS ===
NT AUTHORITY\本地帐户和管理员组成员 已知组 S-1-5-114 只用于拒绝的组
BUILTIN\Administrators 别名 S-1-5-32-544 只用于拒绝的组
=== ROOT DIRS ===
--- https://mirrors.tuna.tsinghua.edu.cn/mysql/ ---
../ | apt/ | yum/
--- https://mirrors.cloud.tencent.com/mysql/ ---
../ | apt/ | yum/
FAIL https://mirrors.ustc.edu.cn/mysql-ftp/ :: 远程服务器返回错误: (404) 未找到。
=== DONE ===

12
.workbuddy/tmp/probe4.txt Normal file
View File

@ -0,0 +1,12 @@
dir ready: True
=== Programs content ===
DBX | GoLand 2025.3 | Microsoft VS Code | MobaXterm | MobaXterm_Installer_v25.3 | MySQL | Trae CN | WebStorm 2024.3.4 | WorkBuddy
=== HEAD cdn.mysql.com ===
HTTP/1.1 200 Connection Established
HTTP/1.1 200 OK
Content-Length: 248009349
=== DONE ===

11
.workbuddy/tmp/probe5.txt Normal file
View File

@ -0,0 +1,11 @@
=== E:\Programs\MySQL ===
(empty dir)
=== E:\Programs\DBX ===
dbx.exe [FILE]
uninstall.exe [FILE]
=== mysqld anywhere in E:\Programs ===
=== DBX exe ===
E:\Programs\DBX\dbx.exe
E:\Programs\DBX\uninstall.exe
=== DONE ===

14
.workbuddy/tmp/procs.txt Normal file
View File

@ -0,0 +1,14 @@
=== mysqld 进程 ===
mysqld 未运行
=== ssh 进程 ===
ssh 未运行
=== 监听端口 3306/13306/33060 ===
均未监听
=== error.log tail ===
2026-09-13T11:27:57.291523Z 0 [System] [MY-010116] [Server] E:\Programs\MySQL\mysql-8.0.46-winx64\bin\mysqld.exe (mysqld 8.0.46) starting as process 45320
2026-09-13T11:27:57.772254Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-09-13T11:28:01.565772Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-09-13T11:28:02.117475Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2026-09-13T11:28:02.118610Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2026-09-13T11:28:02.155511Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060
2026-09-13T11:28:02.155600Z 0 [System] [MY-010931] [Server] E:\Programs\MySQL\mysql-8.0.46-winx64\bin\mysqld.exe: ready for connections. Version: '8.0.46' socket: '' port: 3306 MySQL Community Server - GPL.

12
.workbuddy/tmp/start1.txt Normal file
View File

@ -0,0 +1,12 @@
[..] starting mysqld
launched pid = 45188
3306 listening = True (after 3 s)
process alive = True
=== error.log tail ===
2026-09-13T11:27:57.291523Z 0 [System] [MY-010116] [Server] E:\Programs\MySQL\mysql-8.0.46-winx64\bin\mysqld.exe (mysqld 8.0.46) starting as process 45320
2026-09-13T11:27:57.772254Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2026-09-13T11:28:01.565772Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2026-09-13T11:28:02.117475Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2026-09-13T11:28:02.118610Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2026-09-13T11:28:02.155511Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060
2026-09-13T11:28:02.155600Z 0 [System] [MY-010931] [Server] E:\Programs\MySQL\mysql-8.0.46-winx64\bin\mysqld.exe: ready for connections. Version: '8.0.46' socket: '' port: 3306 MySQL Community Server - GPL.

View File

@ -0,0 +1,5 @@
[OK] credentials.ps1
[OK] install-service.ps1
[OK] pull-prod.ps1
[OK] start-tunnel.ps1
[OK] stop-tunnel.ps1

7
.workbuddy/tmp/unzip.txt Normal file
View File

@ -0,0 +1,7 @@
size = 236.5 MB
md5 = 003f527d5df61b663ff191038cd676bd
MD5 OK
[..] extracting ...
tar exit = 0
target exists = True
[bin] mysql.exe, mysqladmin.exe, mysqlbinlog.exe, mysqlcheck.exe, mysqld.exe, mysqldump.exe, mysqlimport.exe, mysqlpump.exe