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、基础设施和开发人员工具的文章。他目前与妻子和两只兔子住在柏林。他通常不必以第三人称写作,这对所有相关方来说都是一种解脱。