我正在运行 MariaDB (libmysql - 5.5.41-MariaDB),今天我注意到我无法通过命令行进入 mysql 来创建转储文件。它会抛出一个错误:
mysql:无法读取“/etc/my.cnf”目录。(错误代码:2)默认处理中出现致命错误。程序中止
不确定为什么它需要读取名为“my.cnf”的目录。但我确实在 etc 文件夹中看到了一个名为“my.cnf.d”的目录。可能是某种拼写错误,但当我转到我的 my.cnf 文件时,我没有注意到任何设置。唯一与之密切相关的是:
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
这是最近发生的,但我没有更改任何设置,所以我不确定 mariadb 出了什么问题。任何帮助都将不胜感激。
编辑:好的,我通过执行 mkdir my.cnf 解决了该问题。(不确定这个目录有什么用,因为里面什么都没有。从未对 my.cnf 进行任何更改,以使其开始需要这个目录。)
答案1
假设当您禁用读取默认值(--no-defaults)时它可以工作,那么问题就在于默认文件、它们的权限或包含它们的目录的权限中的某个地方。
仔细检查 /etc、/etc/my.cnf、/etc/my.cnf.d、/etc/my.cnf.d 内的文件以及 ~/.my.cnf 的权限。
检查每个文件的内容以查找更多包含内容以及任何其他可能访问文件的指令。
如果启用了 SELinux,请检查 /var/log/audit.log 的内容中是否存在相关的 AVC 拒绝条目。
答案2
解决办法其实很简单。
!includedir /etc/my.cnf.d
是 /etc/my.cnf 上的最后一行,因此 mysql 无法读取完整的“/etc/my.cnf.d”,而只能读取“/etc/my.cnf”。
您只需添加一行以便 mysql 可以读取它。
!includedir /etc/my.cnf.d
# add new line here
答案3
您必须在 !includedir /etc/my.cnf.d 后添加新的空行
!includedir /etc/my.cnf.d
空行
您只需在此行末尾按“enter”键即可:!includedir /etc/my.cnf.d
答案4
每次我重启 MacBook 时,都会出现这种无连接的情况。我认为这与 Mysql 的竞争版本有关。本机 Mac MySql 与 Brew MySql。这是我需要做的全部事情:
sudo mkdir /usr/local/etc/my.cnf.d
然后重启我的终端。我每隔一两个月就会参考这篇文章。它/usr/local/etc/my.cnf
有一个目录的包含/usr/local/etc/my.cnf.d
,如果目录不存在,则失败。所以我只需要创建目录。有点烦人的小错误,但很容易修复。