错误 2002 (HY000):无法通过 Vagrant 中的套接字 '/var/run/mysqld/mysqld.sock' (2) 连接到本地 MySQL 服务器

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in Vagrant

我在 vagrant 中的 mysql-server 有问题。每次我用
vagrant reloadvagrant up 重新启动我的 vagrant box 时,我都会收到这个令人困惑的错误。

我的 vagrant box 是这个:ubuntu/trusty64 来自 Vagrant-Boxes

此错误已在此处和 askubuntu 上多次得到解答。
但我想知道为什么只有这段代码对我有用:

su - mysql -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &"

代码来自 mysql* 文件 /etc/init.d/mysql

任何人都可以解释代码的含义吗?

所有这些回答都没有帮助我从这里进行解释:

mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

该错误表示与服务器的连接失败,根本原因是MySQL服务器不是运行,很可能是因为它没有启动。

您需要确保机器启动脚本确实以正确的顺序启动 MySQL(服务器在客户端连接到它之前),并确保等待启动真正完成。

以下脚本

su - mysql -s /bin/sh -c "/usr/bin/mysqld_safe > /dev/null 2>&1 &"

启动 MySQL 服务器。

它的作用是:

  1. 以 mysql 用户身份登录 (su - mysql)
  2. 执行 shell (-s /bin/sh)
  3. 在此shell (-c)
  4. 中执行命令
  5. 命令本身是/usr/bin/mysqld_safe > /dev/null 2>&1 &

这个命令:

  1. 启动 MySQL 服务器(/usr/bin/mysqld_safe
  2. 将标准输出重定向到无处 (> /dev/null)
  3. 也将标准错误重定向到无处 (2>&1)
  4. 并在后台执行命令(&)

这对我有用:

  1. sudo service mysql stop
  2. sudo usermod -d /var/lib/mysql/ mysql
  3. sudo service mysql start