From d1c040d648f94cd98cb6bd1226f9c30b61ee2372 Mon Sep 17 00:00:00 2001 From: hoelee Date: Tue, 29 Sep 2026 00:57:57 +0800 Subject: [PATCH] Add post: A Read-Only NocoDB Dashboard for a Database on Another Machine EN + ZH twins. The recipe for pointing NocoDB at a MySQL/MariaDB database on another machine: the Docker SNAT source-IP trap (the DB sees the host IP, not the container IP), a SELECT-only grant restricted to that one host, the async source-creation API with no job-status route, the auto-sync that makes a manual table step unnecessary (and the create-table route that makes junk tables), and what a read-only source costs (no metadata edits, UTC-labelled DATETIMEs). Also adds the og-gen TERMINALS and banner-gen BANNERS entries for the slug (keeping the sibling session's entries untouched) and the generated PNGs. --- ...nocodb-dashboard-for-a-remote-database.png | Bin 0 -> 106624 bytes ...nocodb-dashboard-for-a-remote-database.png | Bin 0 -> 43942 bytes scripts/banner-gen/generate.mjs | 61 +++++ scripts/og-gen/generate.mjs | 17 ++ ...-nocodb-dashboard-for-a-remote-database.md | 237 ++++++++++++++++++ ...-nocodb-dashboard-for-a-remote-database.md | 156 ++++++++++++ 6 files changed, 471 insertions(+) create mode 100644 public/banners/read-only-nocodb-dashboard-for-a-remote-database.png create mode 100644 public/og/read-only-nocodb-dashboard-for-a-remote-database.png create mode 100644 src/content/posts/read-only-nocodb-dashboard-for-a-remote-database.md create mode 100644 src/content/posts/zh/read-only-nocodb-dashboard-for-a-remote-database.md diff --git a/public/banners/read-only-nocodb-dashboard-for-a-remote-database.png b/public/banners/read-only-nocodb-dashboard-for-a-remote-database.png new file mode 100644 index 0000000000000000000000000000000000000000..28309544755d6c1218bccf307fd11eb7c0d6817f GIT binary patch literal 106624 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 literal 0 HcmV?d00001 diff --git a/scripts/banner-gen/generate.mjs b/scripts/banner-gen/generate.mjs index e13a67e..15cc4e7 100644 --- a/scripts/banner-gen/generate.mjs +++ b/scripts/banner-gen/generate.mjs @@ -624,6 +624,67 @@ BANNERS['why-i-still-bought-a-local-gpu'] = { ], }; +BANNERS['migrating-codeigniter-iis-to-openlitespeed'] = { + titlebar: 'root@cyberpanel — docroot public/', + lines: [ + { t: 'prompt', text: '$' }, { t: 'cmd', text: 'cp -r app/ public/ → docroot = public_html/public' }, + { t: 'dim', text: 'on IIS these routes only ever answered 302 (SSO) — the code never ran' }, + { t: 'prompt', text: '$' }, { t: 'cmd', text: 'curl -sI http://new-host/lifecode' }, + { t: 'err', text: 'Fatal error: Call to undefined function env() · Constants.php' }, + { t: 'err', text: 'Fatal error: Cannot call constructor · Welcome.php' }, + { t: 'prompt', text: '$' }, { t: 'cmd', text: 'pure constants only · override initController()' }, + { t: 'prompt', text: '' }, { t: 'ok', text: '→ 19-page A4 report renders ✓' }, + ], + flow: [ + { n: '1', label: 'IIS → OpenLiteSpeed' }, + { n: '2', label: '500 on /lifecode', err: true }, + { n: '3', label: 'SSO had hidden it' }, + { n: '4', label: 'two fatal fixes' }, + { n: '5', label: 'report renders ✓' }, + ], +}; + +BANNERS['upgrading-codeigniter-46-to-47'] = { + titlebar: '~/numerology-report — composer update', + lines: [ + { t: 'prompt', text: '$' }, { t: 'cmd', text: 'composer update codeigniter4/framework' }, + { t: 'ok', text: '4.6.3 → 4.7.4 · upgrade guide read · 8 breaking changes audited' }, + { t: 'dim', text: 'none of the documented changes applied to this codebase' }, + { t: 'prompt', text: '$' }, { t: 'cmd', text: 'php spark routes' }, + { t: 'err', text: 'Undefined property: Config\\App::$permittedURIChars' }, + { t: 'err', text: 'Undefined property: Config\\Format::$jsonEncodeDepth' }, + { t: 'ok', text: 'merge project-space configs by hand → routes + report OK ✓' }, + ], + flow: [ + { n: '1', label: '4.6 → 4.7' }, + { n: '2', label: 'guide: 8 changes' }, + { n: '3', label: 'none applied' }, + { n: '4', label: '2 undefined props', err: true }, + { n: '5', label: 'merge configs ✓' }, + ], +}; + +BANNERS['read-only-nocodb-dashboard-for-a-remote-database'] = { + titlebar: 'root@dsm — nocodb · bridge_hoelee', + lines: [ + { t: 'prompt', text: '$' }, { t: 'cmd', text: 'docker exec mysql-server mysql -h192.168.1.124 -e "SELECT CURRENT_USER();"' }, + { t: 'err', text: 'nocodb_ro@192.168.1.1 ← the host IP, not 172.16.0.4' }, + { t: 'dim', text: 'container egress is SNAT-ed through the host' }, + { t: 'cmd', text: 'nocodb → POST /meta/bases/{id}/sources · mysql2' }, + { t: 'hl', text: 'meta.dbVersion = 10.11.19-MariaDB-ubu2404 → connected' }, + { t: 'prompt', text: '$' }, { t: 'cmd', text: "GRANT SELECT ON appdb.* TO 'nocodb_ro'@'192.168.1.1'" }, + { t: 'err', text: 'DROP command denied — read-only enforced by the database' }, + { t: 'ok', text: '4 tables live · 0 rows duplicated ✓' }, + ], + flow: [ + { n: '1', label: 'NocoDB → VM db' }, + { n: '2', label: 'SNAT → host IP', err: true }, + { n: '3', label: 'SELECT-only grant' }, + { n: '4', label: 'source auto-sync' }, + { n: '5', label: 'live dashboard ✓' }, + ], +}; + // ---------- read frontmatter ---------- const postPath = join(ROOT, 'src', 'content', 'posts', `${slug}.md`); let category = 'devops'; diff --git a/scripts/og-gen/generate.mjs b/scripts/og-gen/generate.mjs index cd127b5..cc489dc 100644 --- a/scripts/og-gen/generate.mjs +++ b/scripts/og-gen/generate.mjs @@ -197,6 +197,23 @@ TERMINALS['why-i-still-bought-a-local-gpu'] = `
 local: 50 calls · $0.00 · runs on my card
`; +TERMINALS['read-only-nocodb-dashboard-for-a-remote-database'] = ` +
$docker exec mysql-server mysql -h192.168.1.124 -e "SELECT CURRENT_USER();"
+
 nocodb_ro@192.168.1.1 — the host IP, not the container IP
+
$GRANT SELECT ON appdb.* · source auto-sync→ live ✓
`; + +TERMINALS['migrating-codeigniter-iis-to-openlitespeed'] = ` +
$curl -sI http://new-host/lifecode→ 500
+
 Fatal error: Call to undefined function env() · Constants.php
+
 Fatal error: Cannot call constructor · Welcome.php
+
$pure constants · override initController()→ report renders ✓
`; + +TERMINALS['upgrading-codeigniter-46-to-47'] = ` +
$composer update codeigniter4/framework4.6.3 → 4.7.4
+
INFOupgrade guide read · 8 breaking changes · none apply
+
 Undefined property Config\\App::$permittedURIChars → 500
+
$merge project-space configs by hand→ report renders ✓
`; + // ---------- read frontmatter ---------- const postPath = join(ROOT, 'src', 'content', 'posts', `${slug}.md`); if (!existsSync(postPath)) { diff --git a/src/content/posts/read-only-nocodb-dashboard-for-a-remote-database.md b/src/content/posts/read-only-nocodb-dashboard-for-a-remote-database.md new file mode 100644 index 0000000..5f3d2d5 --- /dev/null +++ b/src/content/posts/read-only-nocodb-dashboard-for-a-remote-database.md @@ -0,0 +1,237 @@ +--- +title: "A Read-Only NocoDB Dashboard for a Database on Another Machine" +description: "Point NocoDB at a MySQL/MariaDB database on another machine without copying a single row — and avoid the Docker SNAT source-IP trap and two API traps I hit." +pubDate: 2026-09-29 +category: devops +tags: ["nocodb", "mysql", "mariadb", "docker", "networking", "dashboard"] +ogImage: /og/read-only-nocodb-dashboard-for-a-remote-database.png +banner: /banners/read-only-nocodb-dashboard-for-a-remote-database.png +draft: false +--- + +My report app writes every lead and every order into MariaDB running on a small VM. The +person who actually runs the business wanted to *look* at those rows — filter them, sort +them, export them — without SSH-ing into the VM and without asking me every time. + +The obvious answer is a spreadsheet-style admin UI. The wrong answer is a second copy of +the data. This post is the recipe I ended up with: **NocoDB pointed straight at the real +database, through an account that can only `SELECT`** — plus the three traps that cost me +the afternoon, one of which is a Docker networking fact that will bite you in any +container-to-LAN setup, not just this one. + +## Why not sync the rows into NocoDB? + +There were three ways to get the owner a dashboard, and I want to be honest that the other +two are legitimate — they just cost something: + +1. **Push every row to NocoDB's API as the app writes it.** Two writes per record, error + handling on both, and the dashboard silently drifts the first time a push fails. The + dashboard becomes a second system of record that is *usually* right. +2. **A cron job that syncs rows every N minutes.** Same duplication, plus a staleness + window, plus a "which side won?" problem when someone edits a row in the dashboard. +3. **Point NocoDB at the database as an external source.** Zero duplication, always + live, one connection config. The dashboard *is* the database, viewed differently. + +I took option 3. The cost is real and worth stating up front: the database's port has to +be reachable from wherever NocoDB runs, and NocoDB now holds a database credential. Both +are acceptable if the credential is a read-only account limited to one host — which is +exactly what the rest of this post builds. + +## The trap nobody warns you about: which IP the database sees + +This is the part I got wrong first, and it is not NocoDB-specific. + +My NocoDB runs in Docker on a Synology NAS, on a user-defined bridge network +(`bridge_hoelee`, container IP `172.16.0.4`). The MariaDB it needs to reach lives on a +different machine at `192.168.1.124` — outside the bridge subnet. + +My first instinct was to grant the account to the container subnet: + +```sql +-- WRONG (well, useless): the container's own IP is not what the server sees +CREATE USER 'nocodb_ro'@'172.16.0.%' IDENTIFIED BY ''; +``` + +It never matched. When a container connects to an address **outside its bridge network**, +the traffic is NATed out through the host — Docker's masquerade rule rewrites the source +address to the **host's** IP. The database sees `192.168.1.1` (the NAS), not +`172.16.0.4` (the container). + +Don't reason about it, measure it. One `SELECT` from *any* container on the same bridge +tells you the truth, and it takes ten seconds: + +```bash +docker exec mysql-server mysql -h192.168.1.124 -unocodb_ro -B -e "SELECT CURRENT_USER();" +# nocodb_ro@192.168.1.1 <- the host IP, not the container IP +``` + +(Pass the password through `MYSQL_PWD` rather than `-p`: on the command line it +ends up in `ps` output and your shell history.) + +Once you know the source address, the grant writes itself — **one host, one schema, one +privilege**: + +```sql +CREATE USER 'nocodb_ro'@'192.168.1.1' IDENTIFIED BY ''; +GRANT SELECT ON appdb.* TO 'nocodb_ro'@'192.168.1.1'; +FLUSH PRIVILEGES; +``` + +Two rules I'd apply to any dashboard account: + +- **Never reuse the application's own database user.** The app's account can `INSERT`, + `UPDATE` and `DELETE`; the dashboard's cannot. If the dashboard credential leaks out of + a browser session, the blast radius is "someone can read rows", not "someone can + rewrite the business". +- **Grant to the exact source address, not a wildcard.** `'192.168.1.1'` is one line, and + it survives a `SHOW GRANTS` review. + +## Creating the external source through the API + +NocoDB (image `nocodb/nocodb:2026.09.0` in my case, listening on `10380`) exposes a meta +API; the workspace token lives in the `nc_api_tokens` table of its own meta database. The +call that creates an external MySQL source looks like this: + +```bash +curl -s -X POST "$NC/api/v2/meta/bases/$BASE/sources" \ + -H "xc-token: $TOKEN" -H 'Content-Type: application/json' \ + -d '{ + "type": "mysql2", + "title": "app-vm", + "config": { + "client": "mysql2", + "connection": { + "host": "192.168.1.124", "port": 3306, + "user": "nocodb_ro", "password": "", + "database": "appdb" + } + } + }' +# {"id":"joblzodc9u91flnkw"} +``` + +Two things about that response are surprising: + +1. **You get a job id, not a source.** Source creation is asynchronous. There is also + **no job-status route** — I probed `/api/v2/jobs/{id}`, `/api/v1/db/meta/jobs/{id}`, + `/api/v2/meta/jobs/{id}` and `/api/v1/jobs/{id}`, and all four are 404. Don't sit there + polling; verify the outcome instead. +2. **It auto-syncs every existing table of that database into the base.** You do not add + tables one by one. A few seconds later the base already contained all four of my + tables. + +The verification I settled on reads the source list and looks at `meta`: + +``` +source budabxoawz5lwn9 type=mysql2 order=1 meta=None +source b2sdp3iw0ed1bgo type=mysql2 order=2 meta={'dbVersion': '10.11.19-MariaDB-ubu2404'} +``` + +That `dbVersion` is echoed from the **target** server, so it doubles as proof that the +connection succeeded — and as a free reminder that the far end is MariaDB, not MySQL. + +Reading rows is then the normal records API: + +```bash +curl -s -H "xc-token: $TOKEN" \ + "$NC/api/v2/tables/m01ejjhhne1h59z/records?limit=1" | jq '.pageInfo.totalRows' +``` + +## The trap: `POST /meta/bases/{id}/tables` does not mean "attach this table" + +Because the tables appeared automatically, I assumed the table route was the *manual* +version of the same thing — attach an existing table from a chosen source. It is not. +`POST /api/v2/meta/bases/{baseId}/tables` **creates a brand-new empty table in the base's +default source**. I passed my four table names and got four empty tables inside NocoDB's +own internal database, named `nc_pd1g___leads`, `nc_pd1g___orders` and so on. + +They delete cleanly (`DELETE /api/v2/meta/tables/{tid}`), and nothing was harmed because +the real tables live in the external source. But it is a good example of an API route +whose name suggests "connect" and whose behaviour is "create". For external sources, the +sync you want already happened at source-creation time. + +## What a read-only source costs you + +Read-only is the design goal, but it does have two visible consequences, and I'd rather +document them than pretend they don't exist. + +**You cannot change the table metadata.** I wanted the leads table's primary display +column to be the person's name; NocoDB had auto-picked a dedupe hash instead. Promoting +the column returned: + +``` +400 {"error":"ERR_DATABASE_OP_FAILED","message":"This request couldn't be processed by the database..."} +``` + +Set column order and visibility in the view (UI) instead of fighting the API. It is a +cosmetic problem, not a data problem. + +**`DATETIME` columns render with a UTC label.** A row written at 01:54 local time comes +back as `2026-09-27 01:54:16+00:00`. The value is correct; the zone suffix is a +presentation artefact. Fine for browsing, wrong for cross-timezone arithmetic — don't +build on it. + +There is also a small proof hiding in this: the auto-sync pulled in my app's `migrations` +table (it is a table like any other). Trying to remove it from the base failed with +`DROP command denied` — from the database, not from NocoDB. That is the read-only grant +doing its job, and it is a better verification than any UI label. + +## Four smaller gotchas worth stealing + +1. **Identify a service by an endpoint, not by the port you remember.** My first probes + went to the wrong port and came back with Go-style `404 page not found` bodies, which + look exactly like "the API moved in this version". `curl -s /api/v1/health` on the + right port answered `{"message":"OK"}` and settled it in one second. Related: an + unauthenticated NocoDB meta call answers **401**; a 404 with a Go-flavoured body means + you are talking to a different process entirely. +2. **NocoDB's `NC_DB` is not a DSN.** It is + `mysql2://mysql-server:3306/?d=&u=&p=` — parse the **query + string**. I parsed it as `user:password@host`, got an empty host, and silently skipped + a whole verification block. +3. **A soft-deleted base answers `404 ERR_BASE_NOT_FOUND`.** The base still exists in + `nc_bases_v2` (with `deleted=1`) but is invisible to the API. "Not found" here means + *deleted or out of scope*, not *wrong route* — check the meta table before you go + hunting for a typo in your URL. +4. **The bases list is scoped to the token's workspace.** A workspace token lists only + that workspace's live bases. A suspiciously short list is a scope or soft-delete + symptom, not an authentication failure. + +## What I'd do differently + +- **Measure the source address before writing the grant.** I granted a container-subnet + wildcard because I reasoned about the container's own IP. Ten seconds of + `SELECT CURRENT_USER()` would have told me the answer, and it is a fact you cannot + deduce reliably from the compose file. +- **Treat read-only as the architecture, not a limitation.** Accept that the dashboard + cannot rewrite metadata, and do cosmetic work in the view layer. +- **Don't call the table-create route at all.** The source creation already imported + everything; reaching for a second API route only created cleanup work. +- **One database account per consumer** — app, dashboard, backup job. The dashboard's + credential is the one most likely to be pasted into a browser or a ticket, so it should + be the weakest one in the system. + +## The result + +- One external source, **four tables live** (leads, orders, order files, agent ledger), + **zero duplicated rows** — the owner browses the same rows the application writes, the + moment they are written. +- The dashboard account can only `SELECT` on one schema from one host, and that is + enforced by the **database**: NocoDB's own table-drop attempt comes back + `DROP command denied`. +- Setup time: about 30 minutes of API probing on the first pass, ~10 minutes now that the + recipe is written down (grant → source → verify `dbVersion` → read a row). + +If you are doing this for a client, the shape is worth copying even if NocoDB is not the +tool you choose: **the dashboard connects to the real data, through an account that +physically cannot write to it, and you verify both halves** — that the connection works +(`CURRENT_USER()`, `dbVersion`) and that the account is harmless (`DROP` refused). + +--- + +*I'm Lee Teong Hoe (Mr Hoelee). I wire self-hosted dashboards like this to existing +databases — least-privilege accounts, NocoDB or plain SQL views, behind Traefik and +Cloudflare, on a NAS or a small VM.* + +*Want this set up for your business? [WhatsApp +60 12-797 2969](https://wa.me/60127972969) +· [me@hoelee.com](mailto:me@hoelee.com?subject=Read-only%20dashboard%20for%20my%20database) +· [hoelee.com](https://hoelee.com)* diff --git a/src/content/posts/zh/read-only-nocodb-dashboard-for-a-remote-database.md b/src/content/posts/zh/read-only-nocodb-dashboard-for-a-remote-database.md new file mode 100644 index 0000000..766e24c --- /dev/null +++ b/src/content/posts/zh/read-only-nocodb-dashboard-for-a-remote-database.md @@ -0,0 +1,156 @@ +--- +title: "给另一台机器上的数据库配一个 NocoDB 只读看板" +description: "把 NocoDB 直接指向另一台机器上的 MySQL/MariaDB,一行数据都不用复制 —— 以及我踩到的 Docker SNAT 源 IP 陷阱和两个 API 陷阱。" +pubDate: 2026-09-29 +category: devops +tags: ["nocodb", "mysql", "mariadb", "docker", "networking", "dashboard"] +ogImage: /og/read-only-nocodb-dashboard-for-a-remote-database.png +banner: /banners/read-only-nocodb-dashboard-for-a-remote-database.png +draft: false +--- + +我的报告应用把每一条留资、每一张订单都写进一台小 VM 上的 MariaDB。真正在跑这门生意的人想**看**这些行 —— 筛选、排序、导出 —— 但不想 SSH 进 VM,也不想每次都来问我。 + +最直觉的答案是做一个表格风格的后台界面。最糟的答案是把数据复制一份。这篇写的是我最后落地的配方:**让 NocoDB 直接指向真库,用的账号只能 `SELECT`** —— 外加三个吃掉我半下午的坑,其中一个是 Docker 网络事实,在任何「容器访问局域网」的场景里都会咬人,不只是这一次。 + +## 为什么不把行同步进 NocoDB? + +给业主做看板有三条路,另两条也是正路,只是各有代价: + +1. **应用写入时顺手推一份到 NocoDB 的 API。** 每条记录写两次、两边都要处理失败,而且推送第一次失败的那一刻,看板就开始悄悄漂移 —— 它变成了一个「通常是对的」的第二数据源。 +2. **cron 定时同步。** 同样的重复数据,再加一个延迟窗口,再加一个「谁赢了」的问题:有人在看板里改了行怎么办? +3. **把数据库当作 NocoDB 的外部数据源。** 零重复、永远实时、一份连接配置。看板**就是**这个库,只是换了个方式看。 + +我选了第 3 条。代价说在前面:数据库的端口必须能被 NocoDB 所在的主机访问到,而且 NocoDB 手上会有一个数据库凭据。只要这个凭据是「只读 + 限定一个来源主机」的账号,这两点都可以接受 —— 后面的内容就是怎么把它做出来。 + +## 没人提醒你的坑:数据库到底看到哪个 IP + +这是我最先做错的地方,而且它和 NocoDB 无关。 + +我的 NocoDB 跑在群晖 NAS 的 Docker 里,位于一个自定义 bridge 网络(`bridge_hoelee`,容器 IP `172.16.0.4`)。它要连的 MariaDB 在另一台机器 `192.168.1.124` 上 —— 在 bridge 子网之外。 + +我的第一反应是给容器子网授权: + +```sql +-- 错的(更准确说:没用):容器自己的 IP 根本不是服务端看到的地址 +CREATE USER 'nocodb_ro'@'172.16.0.%' IDENTIFIED BY ''; +``` + +它永远匹配不上。当容器连接**自己 bridge 网络之外**的地址时,流量会经宿主机做 NAT 出去 —— Docker 的 masquerade 规则把源地址改写成**宿主机**的 IP。数据库看到的是 `192.168.1.1`(NAS),不是 `172.16.0.4`(容器)。 + +别推理,去量。在**同一个 bridge 上任意一个容器**里跑一条 `SELECT` 就能得到真相,十秒钟的事: + +```bash +docker exec mysql-server mysql -h192.168.1.124 -unocodb_ro -B -e "SELECT CURRENT_USER();" +# nocodb_ro@192.168.1.1 <- 宿主机 IP,不是容器 IP +``` + +(口令用 `MYSQL_PWD` 传,别用 `-p`:写在命令行里会进 `ps` 输出和 shell 历史。) + +知道来源地址之后,授权就是一行 —— **一个 host、一个库、一个权限**: + +```sql +CREATE USER 'nocodb_ro'@'192.168.1.1' IDENTIFIED BY ''; +GRANT SELECT ON appdb.* TO 'nocodb_ro'@'192.168.1.1'; +FLUSH PRIVILEGES; +``` + +给看板账号两条我建议照做的规矩: + +- **绝不复用应用自己的数据库账号。** 应用的账号能 `INSERT`/`UPDATE`/`DELETE`,看板的不能。万一这个凭据从浏览器会话里漏出去,影响面是「有人能读数据」,而不是「有人能改写生意」。 +- **授权到确切的来源地址,不要通配。** `'192.168.1.1'` 就一行字,而且经得起 `SHOW GRANTS` 复核。 + +## 用 API 建外部数据源 + +NocoDB(我这边镜像是 `nocodb/nocodb:2026.09.0`,监听 `10380`)有 meta API;workspace token 存在它自己元数据库的 `nc_api_tokens` 表里。建一个外部 MySQL 数据源的调用长这样: + +```bash +curl -s -X POST "$NC/api/v2/meta/bases/$BASE/sources" \ + -H "xc-token: $TOKEN" -H 'Content-Type: application/json' \ + -d '{ + "type": "mysql2", + "title": "app-vm", + "config": { + "client": "mysql2", + "connection": { + "host": "192.168.1.124", "port": 3306, + "user": "nocodb_ro", "password": "", + "database": "appdb" + } + } + }' +# {"id":"joblzodc9u91flnkw"} +``` + +这个返回有两个意外: + +1. **拿到的是 job id,不是数据源。** 建源是异步的。而且**没有**任何查询 job 状态的路由 —— 我试了 `/api/v2/jobs/{id}`、`/api/v1/db/meta/jobs/{id}`、`/api/v2/meta/jobs/{id}`、`/api/v1/jobs/{id}`,四个全是 404。别在那儿轮询,去验证结果。 +2. **它会把那个库里已有的表全部自动同步进 base。** 你不需要一张张加表。几秒之后,我的四张表已经全在 base 里了。 + +我最后用的验证方式是读数据源列表、看 `meta`: + +``` +source budabxoawz5lwn9 type=mysql2 order=1 meta=None +source b2sdp3iw0ed1bgo type=mysql2 order=2 meta={'dbVersion': '10.11.19-MariaDB-ubu2404'} +``` + +那个 `dbVersion` 是**对端**服务器回显的版本,所以它既是「连接成功」的证据,也顺手提醒你对面是 MariaDB 而不是 MySQL。 + +之后读行就是正常的 records API: + +```bash +curl -s -H "xc-token: $TOKEN" \ + "$NC/api/v2/tables/m01ejjhhne1h59z/records?limit=1" | jq '.pageInfo.totalRows' +``` + +## 陷阱:`POST /meta/bases/{id}/tables` 不是「挂载这张表」 + +因为表是自动出现的,我就以为那条建表路由是同一件事的**手动**版本 —— 从指定数据源挂一张已有的表。并不是。`POST /api/v2/meta/bases/{baseId}/tables` 是**在 base 的默认源里新建一张空表**。我传了四个表名,结果在 NocoDB 自己的内部数据库里多出四张空表:`nc_pd1g___leads`、`nc_pd1g___orders` 之类。 + +它们能干净删掉(`DELETE /api/v2/meta/tables/{tid}`),而且因为真表在外部源里,什么也没坏。但这是个很好的例子:**一个名字暗示「连接」、行为却是「新建」的 API 路由。** 对外部源来说,你想要的同步在建源那一刻就已经做完了。 + +## 只读源要付的代价 + +只读是设计目标,但它确实有两个看得见的后果,我宁愿写下来而不是假装不存在。 + +**你改不动表的元数据。** 我想把 leads 表的主显示列改成姓名,NocoDB 自动挑的是一个去重哈希。把列提升为主显示列时返回: + +``` +400 {"error":"ERR_DATABASE_OP_FAILED","message":"This request couldn't be processed by the database..."} +``` + +列顺序和显示与否,去视图(UI)里调。这是外观问题,不是数据问题。 + +**`DATETIME` 列会带上 UTC 标签。** 本地时间 01:54 写入的行,读回来是 `2026-09-27 01:54:16+00:00`。值是对的,时区后缀只是展示层的事。拿来浏览没问题,拿它做跨时区换算就错了 —— 别在它上面搭逻辑。 + +这里还藏着一个小小的证明:自动同步把我应用的 `migrations` 表也拉进来了(它也就是一张表)。想把它从 base 里删掉时,报的是 `DROP command denied` —— 拒绝来自**数据库**,不是 NocoDB。这就是只读授权在干活,它比任何 UI 标签都更值得当作验收依据。 + +## 四个值得顺手拿走的小坑 + +1. **认服务要看端点,不要看你记忆里的端口。** 我第一批探测打到了错的端口,返回的是 Go 风格的 `404 page not found` 正文 —— 看起来就像「这个版本 API 搬家了」。在对的端口上 `curl -s /api/v1/health` 回了 `{"message":"OK"}`,一秒钟定案。相关的一点:未认证的 NocoDB meta 调用回的是 **401**;如果你拿到 404 且正文是 Go 味道的,说明你在跟另一个进程说话。 +2. **NocoDB 的 `NC_DB` 不是 DSN。** 它是 `mysql2://mysql-server:3306/?d=&u=&p=` —— 要解析 **query string**。我按 `user:password@host` 解析,得到空 host,然后静默跳过了一整段验证。 +3. **软删除的 base 会回 `404 ERR_BASE_NOT_FOUND`。** base 其实还在 `nc_bases_v2` 里(`deleted=1`),但对 API 不可见。「Not found」在这里的意思是**已删除或超出权限范围**,不是**路由写错了** —— 先去 meta 表里查一眼,别在 URL 里找错字。 +4. **base 列表是按 token 的 workspace 过滤的。** workspace token 只会列出该 workspace 里活着的 base。列表短得可疑,是权限范围或软删除的症状,不是认证失败。 + +## 换我会怎么做 + +- **先量出来源地址,再写授权。** 我因为按容器的 IP 去推理,先授了一个容器子网通配。十秒钟的 `SELECT CURRENT_USER()` 就能告诉我答案,而且这是你没法可靠地从 compose 文件里推出来的事实。 +- **把只读当成架构,而不是限制。** 接受看板改不动元数据,外观的活留给视图层。 +- **压根别碰建表那条路由。** 建源时已经全部导入完了;多伸一次手,只是给自己制造清理工作。 +- **每个消费者一个数据库账号** —— 应用、看板、备份任务各一个。看板这个凭据最可能被贴进浏览器或工单里,所以它应该是整个系统里权限最弱的那个。 + +## 结果 + +- 一个外部数据源,**四张表实时可用**(留资、订单、订单文件、代理台账),**零重复行** —— 业主看到的就是应用写入的同一批行,写进去就能看到。 +- 看板账号只能对**一个库、来自一个主机**做 `SELECT`,而且这是由**数据库**保证的:NocoDB 自己发起的删表尝试返回 `DROP command denied`。 +- 耗时:第一遍约 30 分钟的 API 试探;配方写下来之后约 10 分钟(授权 → 建源 → 验证 `dbVersion` → 读一行)。 + +如果你是要给客户做这件事,这个形态值得照抄,哪怕最后选的不是 NocoDB:**看板连的是真数据,用的账号物理上写不进去,而且两半都要验证** —— 连接是通的(`CURRENT_USER()`、`dbVersion`),账号是无害的(`DROP` 被拒)。 + +--- + +*我是 Lee Teong Hoe(Mr Hoelee)。我负责把这类自托管看板接到已有数据库上 —— 最小权限账号、NocoDB 或纯 SQL 视图、放在 Traefik 与 Cloudflare 之后,跑在 NAS 或小 VM 上。* + +*需要给你的生意搭一套?[WhatsApp +60 12-797 2969](https://wa.me/60127972969) +· [me@hoelee.com](mailto:me@hoelee.com?subject=Read-only%20dashboard%20for%20my%20database) +· [hoelee.com](https://hoelee.com)*