mysqld-validate-config

背景

从 MySQL-8.0.16 开始支持了一个新的功能 Server Configuration Validation,从使用上来就是 mysqld 这个程序提供了一个新的选项 --validate-config 来检查配置文件有没有错误。

这个功能对“错误”的检查还比较初级。


检查有没有出现不支持的配置项

我们知道 my.cnf 里面一定是没有一个叫 "hello" 的配置项的,假设真有人不小心写了这么个配置项,mysqld 现在能帮我们检查出来。

[mysqld]
port=3306
user=mysql
hello=world

检查

mysqld --defaults-file=/tmp/my.cnf --validate-config
2023-04-29T11:50:25.925921Z 0 [ERROR] [MY-000067] [Server] unknown variable 'hello=world'.
2023-04-29T11:50:25.925945Z 0 [ERROR] [MY-010119] [Server] Aborting

可以看到它检查出了 hello=world 这个配置项是它不认识的。


注意

总的来说 --validate-config 的检查是比较初级的,也就是说它不会去检查这个项是否合理;总的来讲就算是 --validate-config 检查通过也不能保证 mysqld 能拉起来。

[mysqld]
port=3306
user=mysql_not_exists

现在我给 user 项配置了一个不存在的用户,但是 --validate-config 是检查不出来的。

mysqld --defaults-file=/tmp/my.cnf --validate-config

# 没有任何输出,但是我们知道 mysql_not_exists 这个用户在系统上是不存在的。{@class=h5 text-secondary mb-4}

最后

看后面官方会不会在这个能力上有所增强吧。