为 MySQL 服务器配置 my.cnf 和 mariadb-server.cnf 文件有什么意义,它们是如何连接的?
What's the point of configuring both my.cnf and mariadb-server.cnf files for a MySQL server, and how are they connected?
我正在尝试使用 Alpine 在虚拟机上配置 MySQL 服务器。
我安装了软件包 mysql
和 mysql-client
。
我知道要正确安装它们,必须通过命令行进行设置或编辑配置。
我也知道 MariaDB 是 MySQL 的分叉版本。我知道 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
我正在尝试使用 Alpine 在虚拟机上配置 MySQL 服务器。
我安装了软件包 mysql
和 mysql-client
。
我知道要正确安装它们,必须通过命令行进行设置或编辑配置。
我也知道 MariaDB 是 MySQL 的分叉版本。我知道 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