我正在尝试在以 Fedora 37:Workstation 为操作系统的机器上配置 MariaDB。
我原本希望使用它/etc/my.cnf
来配置端口等,但是,该文件包含目录/etc/my.cnf.d
。我不明白为什么它有扩展名.d
,我记得在计算机科学课上以 .d 结尾的路径就像头文件,但对于 C++ 程序来说,它是依赖项。
所以我想知道的是:我是否能够使用来配置 MariaDB /etc/my.cnf
,并且我也可以使用目录mariadb-server.cnf
中的文件吗/etc/my.cnf.d
?
如果我可以同时使用两者,那么是否可以正确地假设设置的任何设置/etc/my.cnf
都会覆盖/etc/my.cnf.d
目录内的其他配置?
答案1
虽然/etc/my.cnf
是主配置文件,但/etc/my.cnf.d
它是附加 MySQL 配置文件的目录。
关于这个问题:
“我很困惑为什么它以 .d 作为扩展名,在计算机科学课上我记得以 .d 结尾的路径就像头文件,但对于 C++ 程序来说却是依赖项。”
所有的.d
代表都是d
irectory。就是这样。
这只是组织配置文件的一种不同方式。没有什么深奥或技术性的东西。如果你问我,MySQL 安装不需要它,但我不是决定创建此功能的 MariaDB 开发人员。所以……嘿!进入核心细节。
“如果我可以同时使用两者,那么是否可以正确地假设设置的任何设置
/etc/my.cnf
都会覆盖目录内的其他配置/etc/my.cnf.d
?”
不是。恰恰相反:先加载,然后加载/etc/my.cnf
配置。详情如下。/etc/my.cnf.d
虽然/etc/my.cnf
是主配置文件,但是/etc/my.cnf.d
是一个配置目录。这意味着一个目录可能包含多个配置文件。
作为官方 MariaDB 文档解释:
包括选项文件目录
也可以从另一个选项文件包含目录中的所有选项文件。例如,要包含 /etc/my.cnf.d/ 中的所有选项文件,选项文件可以包含:
[mariadb] ... !includedir /etc/my.cnf.d/
该!includedir
配置选项将从/etc/my.cnf.d/
目录中加载配置文件。通常在主配置/etc/my.cnf
加载后。
实际情况是,您可以在主文件中进行所有想要的更改,/etc/my.cnf
但/etc/my.cnf.d
目录可以包含您希望单独管理的配置选项。
说实话,我从未理解 MySQL 的好处。但是 — 例如 — 在 Apache 中有一个类似的目录/etc/httpd/conf.d
,名为,我会将根据服务器和位置而变化的特定配置文件放在其中。
但对于 MySQL(或 MariaDB),我只需在主配置文件中进行所有更改/etc/my.cnf
。
我的意思是,也许你可以将所有 InnoDB 配置选项拆分出来,并将它们设置在一个名为的配置文件中,/etc/my.cnf.d/innodb.cnf
然后根据需要加载该文件。但每次我思考这样做的好处时,它仍然似乎是一种过于分散的配置管理方法。
最后,您需要将其视为/etc/my.cnf.d/
管理配置文件的便捷方法。如果您不需要它,请不要使用它。