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}
最后
看后面官方会不会在这个能力上有所增强吧。