我正在运行 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 进行任何更改以使其开始需要此目录..
解决方案实际上很简单。
是你在 /etc/my.cnf 上的最后一行,所以 mysql 无法读取完整的 '/etc/my.cnf.d' 只有 '/etc/my.cnf.'
您只需要再添加一行,以便 mysql 可以读取它。
鉴于它在您禁用读取默认值 (--no-defaults) 时有效,那么问题位于默认文件、它们的权限或包含它们的目录的权限中的某个位置。
仔细检查 /etc、/etc/my.cnf、/etc/my.cnf.d、/etc/my.cnf.d 中的文件以及 ~/.my.cnf 的权限。
检查每个文件的内容以获取更多包含和任何其他可能访问文件的指令。
如果 SELinux 已启用,请检查 /var/log/audit.log 的内容以获取相关的 AVC 拒绝条目。
您必须在 !includedir /etc/my.cnf.d 之后添加新的空行
!includedir /etc/my.cnf.d
空行
您必须在此行末尾简单地按“输入”:!includedir /etc/my.cnf.d
很奇怪:故障也突然发生(重启docker容器后)——在
MySQL Ver 14.14 Distrib 5.7.23, Debian 9.5, Docker 17.12.1-ce
尝试了很多东西都没有用,所有权限都正确(afaik)。
最后一个选项是遵循问题作者的“编辑”,这很有效!
我做了:
现在运行
service mysql start
它后突然说:“MySQL 服务器已经启动”。毕竟service mysql restart
就像关闭 docker 容器之前一样工作。每次我重新启动我的 MacBook 时,都会发生这种没有连接的情况。我认为这与 Mysql 的竞争版本有关。本机 Mac MySql VS。酿造 MySql。这就是我需要做的:
然后重新启动我的终端。我每个月或两个月都会参考这篇文章
/usr/local/etc/my.cnf
有一个包含/usr/local/etc/my.cnf.d
目录,如果目录不存在则失败。所以我只需要创建目录。烦人的小错误,但很容易修复。我已经在 macOS Catalina mariadb 中解决了这个问题。