【问题标题】:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in VagrantERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in Vagrant
【发布时间】:2017-03-18 09:19:57
【问题描述】:

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

我的流浪盒子是这个: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 vagrant ubuntu-14.04


    【解决方案1】:

    这对我有用:

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

    【讨论】:

    • 这可能是答案,不值得投反对票 - +1 补偿
    【解决方案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. 命令本身是/usr/bin/mysqld_safe > /dev/null 2>&1 &

    这个命令:

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

    【讨论】:

    • 但是如果我正常启动我的网络服务器,我仍然需要从上面运行脚本......我的流浪盒有问题吗?
    猜你喜欢
    • 2014-04-12
    • 2012-09-19
    • 2019-09-28
    • 2018-08-01
    • 2021-08-15
    • 2021-07-25
    • 1970-01-01
    • 2022-06-30
    • 2017-02-12
    相关资源
    最近更新 更多