TL;博士
使用 Mariadb 多年没有出现问题后,程序突然无法运行。它给出了“无法通过套接字连接”消息,但它的真正含义是 mysqld 没有运行,尽管在某些情况下它实际上正在运行。
我最近一直在 Mac 上使用本地堆栈(包括 mariadb)进行开发。 Mariadb-10.2 是使用 MacPorts 安装的。这个配置非常方便,日常使用已经有一年左右了。前几天突然停止工作了。
尝试从mysql客户端连接时,错误信息如下:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mariadb-10.3/mysqld.sock' (2)
套接字文件不存在,在该位置创建普通文件没有帮助。我已经很多年没有考虑过该文件了,因为我认为它只是由客户端或服务器按需创建的。但是,我确实记得很多年前,当套接字文件丢失时,您可以在正确的位置将其创建为普通文件。
大多数故障排除步骤要么说“创建套接字”,要么“确保 mysqld 正在运行”。不幸的是,似乎没有任何简单的方法来创建套接字。而且 mysqld 没有运行,可能是因为同样的错误。我还尝试放宽目录结构的权限,看看是否有帮助,但没有帮助。
我还尝试在 my.cnf 中为套接字提供特定位置,但这也没有帮助。
停止和启动mysql服务器的方式是通过以下两个命令:
sudo port unload mariadb-10.2-server
sudo port load mariadb-10.2-server
这些命令似乎运行正常,没有错误,但服务器尚未运行。正如我所说,一年来,mariadb 没有出现任何问题,或者使用这两个命令重新启动服务器也没有出现任何问题。
我尝试过重新安装各种版本的 mariadb:10.2、10.3、10.4、10.6 甚至当前的 10.7。由于某种原因,10.4 和 10.6 将无法正确安装。然而,10.2 和 10.3 都安装了,但总是给出上面显示的有关套接字的错误消息。
继续:
在接下来的几天里,我继续研究这个问题,看起来大部分已经解决了。这就是它所花费的:
这种情况是如何发生的,以及为什么需要采取我以前从未需要过的所有这些解决方法,仍然是一个谜。
我将其作为一个问题,而不是认为我已经回答了自己的问题,希望有人能够深入了解问题的根本原因。
我遇到了同样的问题,并尝试了很多方法。有一天我会尝试
sudo systemctl stop mariadb
之后,我想尝试用
重新启动mariadbsudo systemctl restart mariadb
这次我收到了这个错误
job for mariadb.service failed because the control process exited with error code.
see "systemctl status mariadb.service" and "journalctl -xeu mariadb.service" for details.
我用谷歌搜索并找到此页面
切换 root 用户并将 tc.log 从 /var/lib/mysql 移动到 /home 中的某个位置后,我启动 mariadb 并且它可以工作。但当我去连接 mysql workbench 时,仍然遇到了一些小问题。就像没有权限创建架构一样。对于解决方案,我切换到 root 用户,有时使用套接字而不是 tcp-ip 连接。
对于我来说,删除旧版本并安装最新版本,在我的例子中 10.6 有帮助。我的所有数据都毫无问题地恢复了:
sudo apt remove mariadb-common
sudo apt install mariadb-server-10.6