MariaDB 无法通过套接字连接

问题描述 投票:0回答:2

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 都安装了,但总是给出上面显示的有关套接字的错误消息。

继续:

在接下来的几天里,我继续研究这个问题,看起来大部分已经解决了。这就是它所花费的:

  1. 尝试安装各种版本的mariadb——都会出现各种错误。尝试了 10.2、10.3、10.4、10.5、10.6 和 10.7 中的每一个,包括多个版本的多次重复。
    1. 安装会失败。
    2. 如果安装成功,则数据库的创建将不起作用。
    3. 如果数据库创建成功,则保护数据库功能失败。
    4. Mysql 客户端无法运行,总是出现套接字错误
  2. 需要解决方法
    1. 使用 mariadb-10.5,它似乎是受错误困扰最少的。令人惊讶的是,这一次,它确实导致套接字文件出现在预期位置,而其他文件都没有出现。甚至以前的 10.5 也没有。这可能是问题的核心,mariadb 无法启动,而丢失的套接字只是其中的一个症状。
    2. 由于创建root用户时没有密码,因此必须使用sudo来运行客户端。这解决了上面提到的另一个方面。
    3. 由于mysql_secure_installation由于多个文件的权限问题而失败,所以只需手动执行步骤,各个地方都有记录(主要涉及为root用户添加密码、删除无密码帐户、删除测试数据库)。
    4. 必须将主机从 127.0.0.1 更改回 localhost 才能运行 mysql 客户端。 IP 地址不再有效,但 localhost 可以。这与我之前的安装相反。
    5. 必须小心地根据所需的设置调整特定版本的 my.cnf。
    6. 必须在 php.ini 中添加套接字位置设置。或者,使用或使用 ini_set('mysqli.default_socket','/opt/local/var/run/mariadb-10.5/mysqld.sock');

这种情况是如何发生的,以及为什么需要采取我以前从未需要过的所有这些解决方法,仍然是一个谜。

我将其作为一个问题,而不是认为我已经回答了自己的问题,希望有人能够深入了解问题的根本原因。

sockets mariadb
2个回答
0
投票

我遇到了同样的问题,并尝试了很多方法。有一天我会尝试

sudo systemctl stop mariadb

之后,我想尝试用

重新启动mariadb
sudo 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 连接。


-1
投票

对于我来说,删除旧版本并安装最新版本,在我的例子中 10.6 有帮助。我的所有数据都毫无问题地恢复了:

sudo apt remove mariadb-common
sudo apt install mariadb-server-10.6
© www.soinside.com 2019 - 2024. All rights reserved.