6 月 26 日消息,科技媒體 DevClass 近日發(fā)布博文稱 MySQL 中的一個(gè)嚴(yán)重漏洞自 2005 年報(bào)告以來 20 年未修復(fù),引發(fā)社區(qū)對數(shù)據(jù)庫完整性的擔(dān)憂,也促使一些開發(fā)者轉(zhuǎn)向使用 PostgreSQL。
該漏洞追蹤編號為 11472,可追溯到 2005 年 6 月,被標(biāo)記為“S2(Serious)”級別,截至目前為止,仍未被修復(fù)。

該漏洞描述為“更新 / 刪除 foreign key 后未執(zhí)行觸發(fā)器”,觸發(fā)器是一種在特定表(table)上發(fā)生插入、更新或刪除事件時(shí)自動(dòng)運(yùn)行的代碼,通常用于確保數(shù)據(jù)完整性。該漏洞顯示,在間接更新表后,由于其中關(guān)聯(lián)到其它表,觸發(fā)器將不會(huì)執(zhí)行。
在漏洞報(bào)告發(fā)布后不久,開發(fā)團(tuán)隊(duì)表示這是一個(gè)“已知問題”,并將在 5.1 版本中修復(fù),但最終并未修復(fù)。
開發(fā)者們在漏洞報(bào)告中提到,這個(gè)漏洞“嚴(yán)重威脅到 ACID / 數(shù)據(jù)完整性”,2015 年時(shí)還有開發(fā)者表示,“在嘗試在級聯(lián)刪除上實(shí)現(xiàn)觸發(fā)器后,我們開始遭遇這個(gè)問題。請修復(fù)這個(gè)問題,非常感謝?!盇CID 代表原子性、一致性、隔離性和持久性。
Reddit 上的討論包括關(guān)于使用觸發(fā)器來確保數(shù)據(jù)庫完整性是否為最佳實(shí)踐的辯論,以及一個(gè)常見的回應(yīng):“解決方法不是使用 MySQL,而是使用一個(gè)合理的關(guān)系數(shù)據(jù)庫?!弊畛R姷倪x擇是 PostgreSQL。
根據(jù) DB-Engines 的排名,MySQL 的受歡迎程度近些年來一直持續(xù)下降,但它仍然是僅次于 Oracle 的第二大主流數(shù)據(jù)庫管理系統(tǒng),領(lǐng)先于排名第三的 Microsoft SQL Server,排在第四的是PostgreSQL數(shù)據(jù)庫。
