TL; DR
经过多年的使用Mariadb没有问题,突然该计划将无法工作。它给出了“cannot connect via socket”消息,但它真正的意思是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都可以安装,但是总是给出上面显示的关于套接字的错误消息。
续:
在接下来的几天里,我继续抨击这个问题,它似乎大部分得到解决。以下是它所采取的措施:
1.尝试安装各种版本的mariadb--所有版本都会出现各种错误。尝试了10.2、10.3、10.4、10.5、10.6和10.7中的每一个,包括多个版本的多次重复。
1.安装将失败。
1.如果安装成功,则数据库的创建将不起作用。
1.如果数据库创建工作正常,则保护数据库功能失败。
- mysql客户端无法运行,总是出现套接字错误
1.所需的解决方法
1.使用mariadb-10.5,这似乎是最少的错误困扰。令人惊讶的是,这一次,它确实导致一个套接字文件出现在预期的位置,而其他人都没有这样做。甚至10.5以前也没有。这可能是问题的核心,mariadb无法启动,缺少的套接字只是一个症状。
1.由于root用户是在没有密码的情况下创建的,因此必须使用sudo来运行客户端。这解决了上述另一方面。
1.由于mysql_secure_installation由于几个文件的权限而失败,只需手动执行步骤,这些步骤在各个地方都有记录(主要涉及向root用户添加密码,删除没有密码的帐户以及删除测试数据库)。
1.必须将主机从www.example.com改回localhost,mysql客户端才能运行。127.0.0.1这是我以前安装的反面。 The IP address no longer works, but localhost does. This is the reverse of my previous installation.
1.必须小心调整my.cnf的特定版本与所需的设置。
1.必须在php.ini中为套接字位置添加设置。或者,使用或使用ini_set('mysqli. default_socket','/opt/local/var/run/mariadb-10.5/mysqld. sock');
这仍然是一个谜,至于这种情况是如何发生的,以及为什么它采取了所有这些变通办法,我从来没有需要以前。
我把这个问题作为一个问题,而不是考虑我已经回答了我自己的问题,希望有人能深入了解问题的根本原因。
1条答案
按热度按时间pvabu6sv1#
对我来说,删除旧版本并安装最新版本,在我的情况下10. 6帮助。我所有的数据恢复没有问题: