跳到正文

資料庫 ​

新增服務 → 資料庫 列出了 PostgreSQL、MySQL、MariaDB、MongoDB、Redis 和 Valkey。在對應行選擇版本後點選(或按 Enter),資料庫就會被新增並部署。

資料庫版本儲存卷
PostgreSQL18、17、16、15、14/var/lib/postgresql(18 及以上)或 /var/lib/postgresql/data
MySQL8.4 LTS、9、8.0/var/lib/mysql
MariaDB11.8 LTS、11.4 LTS、10.11 LTS/var/lib/mysql
MongoDB8.0、7.0、6.0/data/db
Redis8、7.4、7.2/data
Valkey8、7.2/data

每個資料庫都有一個存放資料的儲存卷、一個自動生成的密碼和一個健康檢查。主版本是固定的:以後要升級,需要匯出再還原。

從應用連線 ​

專案中的其他服務透過 <hostname>.zenavo.internal 存取資料庫,並會收到以下變數,變數名取自新增資料庫時它的內部主機名稱(postgresql → POSTGRESQL_…,postgresql-2 → POSTGRESQL_2_…)。其中的主機部分是 ${CONTAINER_HOSTNAME},所以之後修改主機名時會自動跟著變:

變數範例
<NAME>_CONNECTION_STRINGpostgresql://postgres:…@postgresql.zenavo.internal:5432/zenavo
<NAME>_HOSTpostgresql.zenavo.internal
<NAME>_PORT5432
<NAME>_DB_PASSWORD自動生成的密碼

資料庫只在專案內部可存取。要從你的電腦連線,在 網路 中發布一個 TCP 連接埠(TCP 與 UDP 連接埠),或者使用服務的 指令 面板。

資料庫檢視 ​

資料庫服務的 資料庫 分頁展示資料,並在資料庫容器內用資料庫自己的用戶端執行請求:透過容器的本機 socket 或 127.0.0.1 連線,使用服務變數中的憑據。這不需要開放資料庫連接埠,憑據不會傳送到瀏覽器,你輸入的內容也不會經過 shell。

誰可以檢視資料團隊的成員、管理員和擁有者。觀察者不能檢視資料。
誰可以修改資料團隊的管理員和擁有者。
限制每個資料庫 15 秒、2 MB 輸出,同時最多兩個請求。更長的結果會被截斷並標註。
稽核日誌每次列表、翻頁、查詢和指令都會記錄在團隊的稽核日誌中,包括服務和請求型別,但不會記錄 SQL、鍵、值、篩選條件或文件,因為其中可能包含機密。

用戶端以資料庫的管理使用者執行,而團隊成員本來就可以在 指令 面板中開啟容器的 shell,所以檢視的唯讀模式是為了防止誤操作,並不是沙箱。需要更嚴格隔離的場景,請使用權限更少的資料庫使用者。

PostgreSQL、MySQL 和 MariaDB ​

分頁列出表和檢視,以及估算的行數和列(主鍵會被標出)。點選一個表可以分頁瀏覽它的行,每頁 100 行;切換到 SQL 可以執行語句並以表格檢視結果。按 ⌘ Enter(Ctrl Enter)執行;選中了文字時,只執行選中的部分。查詢使用 psql,或 mysql / mariadb。

預設唯讀語句在唯讀事務中執行,只接受 SELECT、WITH、SHOW、EXPLAIN 和 DESCRIBE。
寫入團隊管理員或擁有者開啟 允許寫入 後,可以執行 INSERT、UPDATE、DELETE 和表結構變更。它們會立即生效;請先做備份。
一次一條語句包含多條語句的指令碼、用戶端指令(\!、source、system 等)和 MySQL 可執行註釋(/*! … */)會被拒絕。
限制語句逾時 15 秒,每次查詢最多 1,000 行。

Redis 和 Valkey ​

鍵 列出鍵及其型別、過期時間和記憶體大小。選擇資料庫(db0、db1 等,列表中會顯示每個庫有多少鍵),輸入匹配模式,例如 user:*。鍵用 SCAN 列出,每次 100 個,從不使用 KEYS(它在大庫上會阻塞伺服器);繼續掃描 會接著列出。點選一個鍵檢視它的值:

型別顯示方式
string值,最多 256 KB
hash欄位和值,每次 100 個(HSCAN)
list元素及其索引,每次 100 個
set成員,每次 100 個(SSCAN)
sorted set按順序顯示成員和分數,每次 100 個
stream條目及其欄位,每次 100 個

元素超過 4 KB 會被截斷。非文字位元組顯示為 \xHH。模組型別(JSON、時間序列等)只顯示型別和大小;請用它們自己的指令讀取。

指令 執行一條指令,引號規則與 redis-cli 相同:SET "my key" "a value"。按 Enter 執行。指令使用 redis-cli 或 valkey-cli,密碼取自 REDIS_PASSWORD 或 VALKEY_PASSWORD。

預設唯讀只接受讀取類指令:GET、HGETALL、LRANGE、SCAN、TTL、INFO 等
寫入團隊管理員或擁有者開啟 允許寫入 後,可以執行修改鍵和值的指令:SET、DEL、EXPIRE、HSET、LPUSH、ZADD、XADD 等。它們會立即生效。
始終拒絕影響整個伺服器或其他用戶端的指令:FLUSHALL、FLUSHDB、SWAPDB、CONFIG、SHUTDOWN、DEBUG、MODULE、ACL、CLIENT、MONITOR、SLOWLOG、REPLICAOF / SLAVEOF、MIGRATE、SAVE、BGSAVE、CLUSTER、FAILOVER;KEYS;指令碼(EVAL、EVALSHA、SCRIPT、FUNCTION、FCALL);阻塞指令(BLPOP、XREAD … BLOCK、WAIT 等);發布/訂閱、事務(MULTI、WATCH)和 SELECT。檢視不認識的指令也會被拒絕。

其他操作請在 指令 面板中執行 redis-cli 或 valkey-cli。

MongoDB ​

分頁列出資料庫及其集合,以及估算的文件數(admin、config 和 local 顯示在 系統資料庫 下)。點選一個集合,以 JSON 輸入篩選、排序和投影,例如 {"status": "active"}、{"created": -1} 和 {"name": 1};按 Enter 查詢。文件每次顯示 50 個,格式為寬鬆模式的 Extended JSON:物件 ID 是 {"$oid": "…"},日期是 {"$date": "…"},JavaScript 數字無法精確表示的 64 位整數是 {"$numberLong": "…"}。篩選條件中也使用同樣的形式。請求使用 mongosh,以 MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD 登入。

查詢篩選、排序和投影各最多 64 KB;每頁最多 500 個文件。超過 256 KB 的文件只顯示 _id;用投影檢視其中一部分。
修改團隊管理員和擁有者可以 插入 文件,並按 _id 一次更新或刪除一個文件。更新使用運算子($set、$unset、$inc 等);不支援替換整個文件。系統集合不能修改。
拒絕在伺服器上執行 JavaScript 的運算子($where、$function、$accumulator)。不支援聚合和 runCommand;這些操作請在 指令 面板中使用 mongosh。

與 Zeabur 無關聯。