学习MySQL系列:6. MySQL 读取配置文件疑惑

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

今天是学习MySQL的第5天。

发现悖论

今天再看MySQL其他文章的时候,发现其中有个知识点是读取配置文件,不是按照优先级去读取的,我们在学习 学习MySQL系列:2. MySQL配置项和配置文件 的时候,我们写过读取配置是按照优先级去读的,这个和知识点有点悖论,于是乎,准备探索一下。

资料梳理

按照资料所述,我们去读MySQL配置文件的时候,是有逻辑规律的,可以使用命令mysql --help | grep my.cnf来获取读取文件路径,当这些路径有多个文件的时候,我们是以最后一个文件为准,而非是按照优先级去读取的。

例如执行命令:

/home/mysql-source/bin/mysql --help | grep my.cnf

执行结果为如上,当我们/etc/my.cnf/home/mysql-source/etc/my.cnf都存在的时候,它会先读/etc/my.cnf然后再度/home/mysql-source/etc/my.cnf,且以/home/mysql-source/etc/my.cnf为准。

验证

那我们如何验证该问题呢? 我的想法是写多个my.cnf放置到不同的目录下,其中有些许差异,我们再验证,我们读到了哪些配置文件,就可以了

我们实验下 我们在此路径都写一个my.cnf

配置文件如上,/etc/my.cnf我们没有配置character_set_server,所以是默认值,而/home/mysql-source/etc/my.cnf最终character_set_serverutf8mb4所以,我们仅需要创建一个库,然后输出其字符编码,我们就知道是读取哪个文件了,就可以验证我们的猜想了。

我们启动MySQL服务器,创建一个库,然后再看它的字符集,我们就明白是使用了哪个配置文件了。

我们发现,建库的字符编码是utf8mb4,所以读取的配置是/home/mysql-source/etc/my.cnf,而非/etc/my.cnf

总结

读取配置文件路径的方法,可以使用mysql --help | grep my.cnf来获取,而读取结果并非以优先级去读取的,而是以有配置文件的最后一个为准,知识点,应该任何一个点都不能马虎,失之毫厘谬以千里,因为感觉是这样,所以想当然的写,则可能会出错,学习过程,不可马虎,要认真对待才行。

posted @ 2022-08-01 23:26  pdudos  阅读(0)  评论(0编辑  收藏  举报  来源