mysql - 为 MySQL 服务器配置 my.cnf 和 mariadb-server.cnf 文件有什么意义?它们是如何连接的?

标签 mysql configuration mariadb

我正在尝试使用 Alpine 在虚拟机上配置 MySQL 服务器。

我安装了包 mysqlmysql-client

我知道要正确安装它们,必须通过命令行进行设置或编辑配置。

我还知道 MariaDB 是 MySQL 的 fork 版本。我知道 MySQL 的选项文件名为 my.cnf,Maria 的选项文件名为 mariadb-server.cnf

问题是:我必须配置哪一个,为什么在我正在查看的实现之一中,两个文件都已配置?我在理解 MySQL 和 MariaDB 如何连接以及为什么我必须编辑这两个配置方面遇到一些困难。 my.cnf 恰好只包含

[mysqld]
port=3306
datadir=/var/lib/mysql
bind-address=0.0.0.0

mariadb-server.cnf只有

[galera]
bind-address=0.0.0.0

我确实理解这些字段的含义,但我想了解这两个配置是如何一起读取的,优先级等等。

在网络上出现了所有这些“使用 my.cnf 文件配置 MariaDB 服务器”页面之后,还有更多的困惑。那么只有 my.cnf 文件就足够了?似乎我什至找不到任何提到 mariadb-server.cnf 文件的内容。此配置位于 /etc/my.cnf.d/mariadb-server.cnf 可能很有用。

最佳答案

默认情况下,mysqld 将读取几个默认位置中的选项文件(例如/etc/my.cnf)。这些记录如下:https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#default-option-file-locations

此外,my.cnf 文件可能包含 a directive to load others :

!includedir /etc/my.cnf.d/

这意味着加载/etc/my.cnf.d 下的所有文件。文件名并不重要。您可以将文件命名为/etc/my.cnf.d/postgresql.cnf 或其他任何名称,mysqld 仍然会愉快地加载它。

为什么要将一些指令放入单独的文件中而不是将它们全部保存在/etc/my.cnf 中?为了模块化。

如果您想以模块化方式部署一些配置指令集,那么使用单个文件的目录比编辑单个文件要容易一些。您可能在编辑时犯错误,并且意外地更改了与预期不同的行。

如果将某些配置选项组织到单独的文件中,删除它们也很容易。只需删除/etc/my.cnf.d下的其中一个文件,然后重新启动mysqld即可。

Linux 上的许多其他服务都遵循这种使用配置文件目录的模式。找个时间试试这个,你可能会看到很多这样的东西:

ls -d /etc/*.d

关于mysql - 为 MySQL 服务器配置 my.cnf 和 mariadb-server.cnf 文件有什么意义?它们是如何连接的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68114196/

相关文章:

c# - 自定义 web.config 部分处理程序

mysql - TokuDB 排序时间在 ASC 和 DESC 之间不同

php - 尝试上传图像时出现 undefined index 错误

php - 使用php将部分文本从mysql更改为变量名

configuration - 在 MVC 6 中访问依赖注入(inject)服务

java - 如何使用今天的日期传入文件名值属性

mysql - mariadb sql 默认 unix_timestamp

mysql - 未知变量 'general_log_file=/var/log/mysql/mysql.log'

mysql - Hibernate自定义sql查询

mysql - 对大数据进行排序的最佳数据存储是什么