Repository navigation
v11.0.0
版本為 11.0.0。dbcli init --uri 寫出的設定形狀改變,且 --uri 與欄位 flag 並用會報錯,
會影響既有腳本,所以採用 major 版本。已存在、含 uri 的設定不會被遷移,連線行為不變。
Changed
- 破壞性變更:
dbcli init --uri寫出的設定形狀改變。 以--uri傳入的 MongoDB
連線字串現在寫入前先拆解成欄位設定(host、user、password、database、
authSource、replicaSet、tls、srv,其餘參數進options),不再原樣存成uri(互動 init 貼上的連線字串也一樣:拆解後列出結果並直接進連線測試,選單第二項改稱「貼上連線字串(Atlas / Compass 複製的)」);互動終端下--uri字串沒帶資料庫名稱時,Database name改為必填、不再預設testdb;
讀取uri欄位的腳本須改讀欄位。既有設定檔裡已存成uri的連線不會被遷移,照常連線;
只有之後重新以--uri執行 init 才會套用新的拆解行為。多組 host、帶authMechanismProperties、
tlsCertificateKeyFilePassword、proxyPassword、同一 query 鍵重複出現,或authMechanism
不是SCRAM-SHA-1/SCRAM-SHA-256的字串無法拆解,仍存成只含system、
uri、database的連線並警告帳密明文存放(除此之外一律拆解成欄位)。字串裡的ssl寫成tls;
非 SRV、有帳號、路徑帶資料庫且未寫authSource的字串,拆解後寫入authSource: <路徑資料庫>,
與 driver 對原字串的認證對象一致。--uri與--host/--port/--user/
--password/--auth-source/--replica-set/--srv/--tls/--no-tls並用,
以及與--use-env-refs並用,現在都會報錯(後者原本只警告)。 srv: true欄位設定的authSource改為 SRV TXT 優先。 既有、有user但未設定
authSource的srv: true連線,若 SRV TXT record 提供authSource,現在會採用該值,
不再固定使用admin;TXT 沒有提供時仍補admin。明確設定的authSource欄位仍優先,
非 SRV 的欄位設定維持預設admin。
Added
- MongoDB 欄位設定新增
options:字串對字串的物件,內容附加到連線 URI 的 query
(例如{"retryWrites": "false", "appName": "dbcli"})。只接受純字串,不支援 env-ref;
鍵若與authSource/replicaSet/tls/ssl同名(不分大小寫)會驗證失敗並指出該鍵,
請改設專屬欄位。設定了uri時options被忽略。 dbcli init新增 MongoDB flag:--replica-set <name>、--srv、--tls/--no-tls。
--srv寫入srv: true且不寫port,並在同時給--port/--env-port時警告該 port 被忽略;
--tls與--no-tls皆未給時不寫tls,沿用 driver 預設。互動精靈不會再問已用 flag
給的值;搭配--use-env-refs時這些 flag 同樣生效。dbcli doctor在uri與options並存時警告:uri優先,options會被忽略
(原本只檢查host/user,現在options也納入)。