MySQL / 簡短指南

如何檢查 MySQL 配置是否存在語法錯誤

分享到

引言

配置服務時,在將更改應用於其將影響的環境之前,驗證這些更改非常重要。對於 MySQL 資料庫等關鍵服務所做的更改尤其如此。

雖然許多更改需要手動檢查語義正確性(確保配置符合您的預期),但通常您可以自動化語法正確性檢查(確保更改格式符合預期)。這提供了一種有限但極其有用的檢查,可以捕獲拼寫錯誤、錯誤的標點符號以及格式錯誤的配置選項,否則這些問題將阻止伺服器在嘗試引入新更改時正確啟動。

在本簡短指南中,我們將介紹如何使用內建選項驗證 MySQL 伺服器配置檔案。這可以幫助您驗證所做的編輯在重啟服務時不會干擾 MySQL。

檢查 MySQL 伺服器配置檔案

用於執行 MySQL 伺服器的 mysqld 二進位制檔案包含許多您可能不經常使用的選項。其中之一是 --validate-config 標誌。

--validate-config 標誌會使 mysqld 二進位制檔案解析其配置檔案,然後退出。您可以透過輸入以下命令執行驗證檢查

mysqld --validate-config

如果未發現問題,程式將成功退出,不輸出任何內容,而不是嘗試啟動 MySQL 伺服器。您可以透過檢查其退出程式碼來驗證程序是否成功退出

echo $?
0

如果發現任何錯誤,MySQL 將像在實際啟動場景中一樣中止程序,並輸出有關出現問題的檔案和行的資訊。您可以向 MySQL 配置檔案新增語法錯誤以觸發此過程並檢視輸出。例如,您可以

echo "hello there" | sudo tee --append /etc/mysql/my.cnf

現在,當您再次檢查配置時,命令會輸出我們新增到配置中的問題行

mysqld: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 23.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

退出程式碼也驗證了錯誤的發生

echo $?
1

您可以使用 sed 來刪除我們新增到 MySQL 配置檔案中的行。再次驗證配置檔案以確保刪除成功

sudo sed --in-place '/hello there/d' /etc/mysql/my.cnf
mysqld --validate-config

伺服器配置檔案現在已再次驗證為語法正確。

結論

在本指南中,我們介紹瞭如何使用帶有 --validate-config 標誌的 mysqld 二進位制檔案來驗證 MySQL 伺服器配置檔案中的錯誤。雖然這不能用於檢測所有錯誤,但它在防止拼寫錯誤、不正確的配置語法和無效選項方面大有幫助。在重啟伺服器之前,始終使用 --validate-config 標誌是一個好主意,以確保您的新配置在停止資料庫服務之前是有效的。

關於作者
Justin Ellingwood

Justin Ellingwood

Justin 自 2013 年以來一直撰寫有關資料庫、Linux、基礎設施和開發者工具的文章。他目前與妻子和兩隻兔子住在柏林。他通常不需要以第三人稱寫作,這讓所有相關方都鬆了一口氣。
© . This site is unofficial and not affiliated with Prisma Data, Inc.