Add post: A Read-Only NocoDB Dashboard for a Database on Another Machine
Deploy / build (push) Successful in 28s
Deploy / build (push) Successful in 28s
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.
This commit is contained in:
@@ -197,6 +197,23 @@ TERMINALS['why-i-still-bought-a-local-gpu'] = `
|
||||
<div class="line"><span class="prompt"> </span><span class="fix">local: 50 calls · $0.00 · runs on my card</span></div>
|
||||
`;
|
||||
|
||||
TERMINALS['read-only-nocodb-dashboard-for-a-remote-database'] = `
|
||||
<div class="line"><span class="prompt">$</span><span class="cmd">docker exec mysql-server mysql -h192.168.1.124 -e "SELECT CURRENT_USER();"</span></div>
|
||||
<div class="line"><span class="prompt"> </span><span class="err">[email protected] — the host IP, not the container IP</span></div>
|
||||
<div class="line"><span class="prompt">$</span><span class="cmd">GRANT SELECT ON appdb.* · source auto-sync</span><span class="fix">→ live ✓</span></div>`;
|
||||
|
||||
TERMINALS['migrating-codeigniter-iis-to-openlitespeed'] = `
|
||||
<div class="line"><span class="prompt">$</span><span class="cmd">curl -sI http://new-host/lifecode</span><span class="err">→ 500</span></div>
|
||||
<div class="line"><span class="prompt"> </span><span class="err">Fatal error: Call to undefined function env() · Constants.php</span></div>
|
||||
<div class="line"><span class="prompt"> </span><span class="err">Fatal error: Cannot call constructor · Welcome.php</span></div>
|
||||
<div class="line"><span class="prompt">$</span><span class="cmd">pure constants · override initController()</span><span class="fix">→ report renders ✓</span></div>`;
|
||||
|
||||
TERMINALS['upgrading-codeigniter-46-to-47'] = `
|
||||
<div class="line"><span class="prompt">$</span><span class="cmd">composer update codeigniter4/framework</span><span class="fix">4.6.3 → 4.7.4</span></div>
|
||||
<div class="line"><span class="prompt">INFO</span><span class="cmd">upgrade guide read · 8 breaking changes · none apply</span></div>
|
||||
<div class="line"><span class="prompt"> </span><span class="err">Undefined property Config\\App::$permittedURIChars → 500</span></div>
|
||||
<div class="line"><span class="prompt">$</span><span class="cmd">merge project-space configs by hand</span><span class="fix">→ report renders ✓</span></div>`;
|
||||
|
||||
// ---------- read frontmatter ----------
|
||||
const postPath = join(ROOT, 'src', 'content', 'posts', `${slug}.md`);
|
||||
if (!existsSync(postPath)) {
|
||||
|
||||
Reference in New Issue
Block a user