首頁/產品

手機優先的資料庫管理工具 Quero

2026年08月20日 產品 Quero .NET Vue PostgreSQL SQL Server MySQL MariaDB Oracle Sybase ASE 自架 資料庫管理

半夜資料庫出事,人多半不在電腦前。手機開得動瀏覽器,但打得開的工具沒幾個——桌面版的資料庫管理軟體幾乎都假設你坐在自己的電腦前,用的是自己機器上存好的那組帳密。要嘛裝一套用得很委屈的手機 App,要嘛請同事幫忙開 VPN,要嘛乾脆等回到電腦前再處理。

還有一件事更麻煩:那組帳密存在誰的筆電上。工程師一多,正式環境的資料庫密碼就跟著散在每個人的電腦裡,誰改過職務、誰的筆電被偷,都不知道要不要跟著轉密碼。

Quero 是一套自架的資料庫管理工具,手機優先設計,連線憑證只存在伺服器上——使用者從頭到尾不會拿到、也不需要知道目標資料庫的密碼,每一次查詢與變更都留下稽核紀錄。

長什麼樣子

Quero 的工作區:左側資料庫樹,右側 SQL 編輯器與查詢結果

左邊是資料庫樹,右邊是分頁式的 SQL 編輯器,執行結果就接在查詢下面。畫面全部是深色主題、按鈕故意做得比桌面軟體大——結果列上的操作按鈕最小 44px,那是給拇指點的尺寸,不是給滑鼠游標的。同一個畫面在手機瀏覽器上照樣可以展開資料庫樹、寫查詢、看結果,不用切成另一套閹割版的介面。

登入頁把這個定位講得很直接:

Quero 的登入頁:手機優先的資料庫管理工具,連線憑證由伺服器保管

六種資料庫,一套介面

PostgreSQL、SQL Server、MySQL、MariaDB、Oracle、Sybase ASE,六種都用同一套 SQL 編輯器、同一個結構管理精靈、同一套匯出格式。差異藏在一層方言抽象裡:每種資料庫各自實作分頁語法、識別碼括號、系統目錄查詢、EXPLAIN 語法,上層邏輯完全不用知道現在連的是哪一種。

新增連線時選了 Oracle,欄位會自己換一套說法:

新增連線:選了 Oracle,埠自動變成 1521,資料庫欄位變成 Service Name / SID

Oracle 認的是 Service Name 或 SID,不是一般意義的資料庫名稱,欄位標籤跟提示文字會跟著換,不會讓人對著「資料庫」這四個字硬填錯東西。MariaDB 的方言直接繼承 MySQL 那一份——兩者的線路協定幾乎相同,只覆寫版本字串跟 EXPLAIN 語法,不必整份重寫。

方言邏輯不是紙上談兵,是真的連上 Docker 起的 PostgreSQL、MySQL、MariaDB、Oracle 實例測出來的,也真的測出過問題:Oracle 把 TABLE 當保留字,拿它當繫結變數名稱送出去,資料庫直接回 ORA-01745「繫結變數名稱不合法」;ALL_CONSTRAINTS.search_conditionLONG 型別,不能直接用 || 串接,串了就 ORA-00932。兩個都是那種光看文件、不連真實伺服器絕對測不出來的錯,修完才真的算數。

Sybase ASE 是唯一沒能連真實伺服器驗證的一種——市面上找得到的容器映像在 Apple Silicon 上跑會直接 SIGSEGV,一路查到是資料庫初始化那段 x86_64 二進位檔跟模擬層不相容,不是設定問題。這件事沒有假裝解決,方言邏輯只靠單元測試把關,誠實記在文件裡。

結構管理:填表單,看 SQL,再決定要不要送出

結構管理精靈:左邊填欄位,按下「產生 SQL」前不會執行任何東西

新增資料表、改欄位型別、加索引,不用手刻 DDL 語法。填完表單按「產生 SQL」,語句會直接填進 SQL 編輯器讓你先看過、要改也可以自己改,按「執行」才會真的送出去——中間這一步沒有例外,避免精靈幫你生出一句連自己都沒看過的語句。

稽核與存取控制

每一次查詢、每一次交易,誰、什麼時候、對哪個連線做了什麼,都寫進一條雜湊鏈保護的稽核紀錄——事後要覆核不用擔心中間被誰改過。

存取權綁在連線上,可以指派給個人也可以指派給群組,分唯讀、讀寫、含 DDL 三個等級,能設到期日;一個人同時被好幾筆命中時取最高等級,過期的不算數。連線層級還有一個「唯讀鎖定」開關,開了之後所有會改狀態的語句一律擋下,壓過任何個人的授權——正式環境的連線平常就鎖著,真的要寫入時再單獨開放。

離線授權,不連外

授權碼帶 ECDSA P-256 簽章,Quero 驗證授權完全離線,不會為了這件事連上任何外部服務,也不回傳使用量。沒有授權或授權過期時,整個部署轉成唯讀——查詢與稽核仍然可用,因為事故當下把人鎖在門外,比授權過期還嚴重。

系統設定:產品授權狀態與備份還原

現在

後端是 .NET 10 的 ASP.NET Core,前端是 Vue 3,自己的帳號、連線設定、稽核紀錄存在 SQLCipher 加密過的 SQLite 裡——目標資料庫的資料完全不經過這個檔案。453 個單元測試、187 個整合測試守著這一套邏輯。

部署方式兩種:一個容器跑 Docker,或者不想用 Docker 的話,publish.sh 直接產出 Windows/Linux/macOS 各架構的獨立執行檔,Quero install 一行就在 Linux 上註冊成 systemd 服務、macOS 上註冊成 launchd,開機自動啟動。裝完開瀏覽器,第一個造訪的人填帳號密碼就是管理員,不需要另外拿 token。