mysqld 检查配置文件语法而不应用

8ct*_*pus 5 mysql

有没有办法在应用 mysqld 配置文件之前测试它们的更改?我正在考虑相当于httpd -tbut for的东西mysqld

此链接https://www.percona.com/blog/2011/02/17/how-to-syntax-check-your-my-cnf-file/建议:

mysqld --help
error: Found option without preceding group in config file: /etc/my.cnf.d/mariadb-server.cnf at line: 6
...
Run Code Online (Sandbox Code Playgroud)

这确实有效,但返回码未更改且始终为 0,因此不适合在脚本中使用。

Ger*_*der 5

将 stderr 输出重定向mysql --help到 stdout,您可以 grep 它。

mysqld --help 2>&1 | grep -ci error
Run Code Online (Sandbox Code Playgroud)

这将导致0没有错误以及错误的数量(如果有的话)。

如果您想依赖返回码,则可以使用grep -qi. 然而,这有点违反直觉,因为 grep0在找到字符串时会返回,而在没有找到字符串时error会返回。1