【问题标题】:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'错误 2002 (HY000): 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器
【发布时间】:2013-03-05 05:04:32
【问题描述】:

我在 Mac OS X Mountain Lion 上使用 homebrew install mysql 安装了 MySQL,但是当我尝试使用 mysql -u root 时出现以下错误:

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

这个错误是什么意思?我该如何解决?

【问题讨论】:

  • 没有将其作为答案发布,但您还必须install mysql-server 包,而不仅仅是mysql
  • @HankyPanky 也许你写的时候是这样。但在 2016 年,Brew 没有 mysql-serverinstall
  • 请务必注意您使用 Homebrew 安装,因此请忽略非 Homebrew 提示并使用 brew services start mysql 或(如果您不想要后台服务)mysql.server start.
  • 我让它工作但使用旧的正常 mysql 5.7.19。新的 mysql@5.7 版本 5.7.24 无法工作,因为某些配置引用保持链接到旧的 mysql 而不是新的 brew Cellar mysql@5.7 Keg。所以谢谢我稍后再试
  • 运行brew upgrade后也可能发生此错误,这将安装比以前安装的更新版本的mysql。

标签: mysql macos


【解决方案1】:

Homebrew 绝对不会使用标准重新安装来修复权限,并且追查损坏的文件夹/文件将花费比其价值更长的时间。

在这种情况下 - 手动删除 mysql 安装并通过自制软件重新安装。大约需要 2 分钟。

cd /usr/local/var

sudo rm -rf mysql

brew install mysql

Homebrew 默认安装 mysql insecure,所以如果你想要密码:

mysql_secure_installation

然后启动它。

mysql -uroot

【讨论】:

    【解决方案2】:

    您可能在自制 mysql 安装过程中遇到了一些问题,并且 mysql 服务可能没有运行。如果是这种情况,那么可能值得尝试以下步骤以正确重新安装 mysql,然后尝试连接。

    sudo chown -R $(whoami) /usr/local/var
    
    sudo chown -R $(whoami) /Library/Caches/Homebrew
    
    brew uninstall mysql
    
    brew install mysql
    
    mysql.server start   
    
    mysql -uroot  
    

    【讨论】:

      【解决方案3】:

      本地机器上所有这些问题的最佳替代方案 -> DOCKER

      按照这些步骤,您将与本地 mysql 设置一样好:

      1. 安装 Docker
      2. 确保 docker 正在运行(只需打开 Docker 桌面应用程序)
      3. 在终端上运行此命令 -> docker pull mysql
      4. 运行以下命令,您的 mysql 将在 3306 端口上启动并运行,密码为 root,用户名也为 root

      -> docker run --name docker-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

      【讨论】:

      • 这不是在回答问题,您只是在建议用户可能会或可能不会采取的不同路径。
      • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
      【解决方案4】:

      就我而言,只需将主机指定为 127.0.0.1,而不是 localhost:

      $ bin/mysql -uroot -p -h127.0.0.1
      Enter password:
      Welcome to the MySQL monitor.  Commands end with ; or \g.
      Your MySQL connection id is 8
      Server version: 8.0.26
      
      Copyright (c) 2000, 2021, Oracle and/or its affiliates.
      
      Oracle is a registered trademark of Oracle Corporation and/or its
      affiliates. Other names may be trademarks of their respective
      owners.
      
      Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
      
      mysql>
      

      【讨论】:

        【解决方案5】:

        在使用上述所有解决方案后,没有什么对我有用,但它起作用了。

        如果您使用 HomeBrew 安装了 MySQL,然后在您的 Mac 中检查 System Preferences > MySQL,如果 MySQL 服务器正在运行,则它已停止 stop it 点击停止 MySQL 服务器并从终端写入命令 mysqlserver.start 启动 MySQL。

        如果不行你也可以试试:-

        如果您还安装了 MySQL 工作台,则只需卸载 MySQL 工作台和 MySQL,然后先安装 MySQL,然后再安装 MySQL 工作台。

        【讨论】:

          【解决方案6】:

          我设法通过将 localhost 更改为 127.0.0.1 解决了这个问题

          【讨论】:

          • 你能添加一些细节,比如你改变了什么配置文件?之前的值是多少。 “将 localhost 更改为 127.0.0.1”这句话听起来就像您正在编辑 /etc/hosts 文件,它应该已经是 127.0.0.1 。
          • 在你的命令中添加ip地址而不是localhost mysql -h 127.0.0.1 -u root -p
          【解决方案7】:

          指定的数据目录/usr/local/var/mysql/不可用。您可以删除服务器添加到其中的所有文件。

          MacOS:
          $brew services stop mysql
          $brew services list
          $brew uninstall  mysql
          
          $brew install mysql
          $brew postinstall mysql
          
          If Any error found then run those cmd
          $sudo rm -rf /usr/local/var/mysql
          $sudo rm /usr/local/etc/my.cnf
          $brew postinstall mysql
          
          
          $brew services start mysql
          $mysql_secure_installation
          完成所有安全安装过程然后运行
          $mysql -u root -p
          

          恭喜你刚刚设置了mysql!

          【讨论】:

          • 我按照您的所有步骤操作,但在ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)下方仍然出现相同的错误
          • 这应该是第一解决方案。为此投票更多。
          【解决方案8】:

          如果您在 OSX 上并且有 XAMPP,请按照以下步骤操作:

          感谢 Jackstine 的回答,我能够做到以下几点:

          $ cat ~/.my.cnf

          [mysql]
          
          # CLIENT #
          port                           = 3306
          socket                         = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
          

          我希望这能在我以后忘记时再次帮助我!

          【讨论】:

            【解决方案9】:

            在终端中点击“brew services start mysql”

            【讨论】:

              【解决方案10】:

              在尝试了所有这些 SO 答案的众多选项后,运行 sudo chown _mysql /usr/local/var/mysql/* 终于帮助了我。权限问题可能是由于机器关闭不当造成的。

              【讨论】:

                【解决方案11】:

                在尝试了许多解决方案之后,似乎最终成功的方法是通过 IP 连接。不再随机删除文件套接字。

                只需更新您的 MySQL 客户端配置(例如 /usr/local/etc/my.cnf):

                [client]
                port = 3306
                host=127.0.0.1
                protocol=tcp
                

                【讨论】:

                  【解决方案12】:

                  这发生在自制软件安装之后,并且由于权限问题而发生。以下命令修复了该问题。

                  sudo chown -R _mysql:mysql /usr/local/var/mysql
                  
                  sudo mysql.server start
                  

                  【讨论】:

                  • 你太棒了@nirojan,我的头撞到了墙上 :thumsup:
                  • 赞!但是当我重新启动我的 MacBook 时,我遇到了同样的问题。
                  • 我得到这个:`错误!服务器退出而不更新 PID 文件 (/var/lib/mysql/Saranshs-MacBook-Pro-2.local.pid)。` OS: Catalyna mysql: 5.7.29
                  • 我也是:启动 MySQL 。错误!服务器退出而不更新PID文件(/usr/local/var/mysql/localhost.pid)。
                  • 运行命令The server quit without updating PID file后出现此错误@
                  【解决方案13】:

                  升级到 Catalina OS 后遇到类似问题。运行 mysqld 命令后,我发现日志文件存在一些问题。其他人可能会有所不同。

                  $ mysqld
                  

                  问题是

                  2019-10-16T04:58:59.174474Z 0 [ERROR] Could not open file '/var/log/mysql/error.log' for error logging: No such file or directory
                  2019-10-16T04:58:59.174508Z 0 [ERROR] Aborting
                  

                  通过创建它并应用适当的权限来解决它。

                  sudo mkdir -p /var/log/mysql
                  sudo touch /var/log/mysql/error.log
                  sudo chown -R _mysql:mysql /var/log/mysql/
                  

                  重启 MySQL

                  brew services restart mysql@5.7
                  

                  问题已解决。

                  mysql -uroot -proot
                  

                  【讨论】:

                    【解决方案14】:

                    我不断回到这篇文章,我已经多次遇到这个错误。这可能与在全新安装后导入我的所有数据库有关。

                    我正在使用自制软件。唯一曾经为我修复它的东西:

                    sudo mkdir /var/mysql
                    sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
                    

                    今天早上,在我的机器决定一夜之间关闭后,问题又回来了。现在唯一修复它的就是升级mysql。

                    brew upgrade mysql
                    

                    【讨论】:

                      【解决方案15】:

                      我建议你运行

                        mysql.server start
                      

                      去之前

                        mysql -u root -p
                      

                      以便在尝试登录之前确保mysql服务器正在运行

                      当你启动/重启一台没有运行 mysql 服务器的机器时,这种情况会发生很多次。

                      【讨论】:

                        【解决方案16】:

                        这个问题与/usr/local/var/mysql文件夹访问有关,我删除这个文件夹并重新安装mysql。

                        1. 用 brew 卸载 mysql:

                          brew uninstall mysql

                        2. sudo rm -r /usr/local/var/mysql

                        3. brew install mysql@8.0
                        4. mysql -u root

                        这个解决方案对我来说很好用! 但是您丢失了所有数据库!警告!

                        【讨论】:

                        • 这很可能会解决问题,但是对于未来的读者,请注意这将清除您的所有数据库。这基本上是对 MySQL 的重新安装。我知道问题的上下文是全新安装,但一些正在扫描的人可能只是在不知道它可能对现有/生产安装造成损害的情况下尝试此操作。
                        • 这实际上不是一个解决方案。这是“您是否尝试过再次打开和关闭它?”
                        【解决方案17】:

                        只有这对我有用 brew services start --all (尝试所有答案后)

                        【讨论】:

                        • 解释它与问题的关系。
                        【解决方案18】:

                        试试这个

                        rm -rf /usr/local/var/mysql && brew postinstall mysql@5.7 && brew services restart mysql@5.7
                        

                        【讨论】:

                          【解决方案19】:

                          警告 - 此方法将删除您在 /usr/local/var/mysql 文件夹中的所有数据库

                          我用 Homebrew 安装了 MySQL,唯一能解决这个问题的就是重新安装 MySQL。

                          在我公司的笔记本电脑上,我无权通过 Homebrew 从我的计算机上卸载 MySQL:

                          $ brew uninstall mysql --ignore-dependencies
                          Uninstalling /usr/local/Cellar/mysql/8.0.12... (255 files, 233.0MB)
                          Error: Permission denied @ dir_s_rmdir - /usr/local/Cellar/mysql/8.0.12
                          

                          因此,我手动删除并重新安装了 MySQL:

                          $ sudo rm -rf /usr/local/Cellar/mysql
                          $ brew cleanup
                          $ sudo rm -rf /usr/local/var/mysql
                          $ brew install mysql
                          

                          这成功了!

                          【讨论】:

                          • 警告 - 此方法将删除所有数据库(在 /usr/local/var/mysql 文件夹中)。
                          【解决方案20】:

                          我遇到了这个问题,我设法使用以下解决方案运行 mysql 服务器

                          通过.dmg(https://dev.mysql.com/downloads/mysql/5.7.html)安装mysql,你会在系统偏好设置中得到mysql服务面板,然后从面板启动mysql试试

                          mysql -u root -p

                          附上图片供参考

                          【讨论】:

                            【解决方案21】:

                            解决方案围绕:

                            • 更改 MySQL 的权限

                              sudo chown -R _mysql:mysql /usr/local/var/mysql
                              
                            • 启动 MySQL 进程

                              sudo mysql.server start
                              

                            只是为了补充here 和许多不同帖子中提供的许多很棒且有用的答案,尝试指定主机如果上述命令没有为您解决此问题,即

                            mysql -u root -p h127.0.0.1
                            

                            【讨论】:

                            • 对我来说是权限问题
                            • 应该是:mysql -u root -p -h127.0.0.1
                            • 哇,这样的解决方案比清除我所有本地的东西更好。这是一个快速修复!
                            • 我在上面尝试过,但最终,这行得通:sudo chown -R $(whoami) $(brew --prefix)/*
                            【解决方案22】:

                            这里有很多其他有用的回复,但对我来说没有任何解决方法。最终,我在这个网站或其他网站上找到的任何东西都不会让 Homebrew 的任何版本的 MySQL 为我工作。

                            https://dev.mysql.com/downloads/file/?id=479114 下载 DMG(找到您需要的适当版本)并让向导为我安装它非常轻松。唯一的其他手动步骤是将 /usr/local/mysql/bin 添加到我的 PATH 中。

                            如果 brew 给您带来麻烦,我会推荐此选项。

                            更新 - 如果仍然无法解决问题,请在通过 DMG 安装之前尝试完全清除 mysql。请按照以下说明操作:https://gist.github.com/vitorbritto/0555879fe4414d18569d

                            【讨论】:

                            • 我也是通过 DMG 文件安装的,但我仍然收到此套接字错误。 mysql --version 适用于我和--help,但仅此而已。我添加到 path 以使 --version 和 --help 命令正常工作。你能提供一些建议吗?谢谢。
                            • 先查看清除mysql的更新。这一直在为我自己和几位同事解决。
                            【解决方案23】:

                            我已经尝试了所有可能的方法来解决这个问题,比如ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock,卸载并重新安装mysql,确保mysql在xampp上运行但没有它仍然有效。

                            最后,我打开 my.cnf(配置文件)并复制套接字路径(确保复制完整路径,否则它将无法工作)。然后我在终端中执行这个命令

                            mysql --socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
                            

                            你看,mysql 启动了。

                            此解决方案仅在您的 MySQL 显示在 Xampp/Ampps 上运行时才有效,但在终端中,当您已经尝试过类似的操作时,它仍然没有连接到正确的套接字:

                            ./mysql -u root
                            

                            brew services start mysql
                            

                            我希望这会有所帮助!

                            【讨论】:

                            • 我也尝试了这篇文章中建议的所有解决方案,但都没有奏效。你需要安装xampp吗?我不熟悉这个。我只从官方网站(.DMG)安装了 mysql 服务器 GPL 版本。我不相信我有这个应用程序--XAMPP。你能详细说明一下吗?谢谢。
                            【解决方案24】:

                            哎呀,我花了一段时间才弄明白。我在评论中看到了。使用 brew 安装 mysql 并启动服务(可能使用sudo brew services start mysql)然后运行:

                            $ mysqld
                            

                            然后 MySQL 应该会为您运行。

                            【讨论】:

                              【解决方案25】:
                              1. 卸载 MySQL。
                              2. 删除/usr/local/var/mysql/
                              3. 安装 MySQL。

                              【讨论】:

                              • 这不会吹走您可能拥有的所有数据库吗?对我来说似乎是一个相当严厉的解决方案,特别是考虑到它可能只是 MySQL 没有运行的问题。
                              • 是的,但根据问题,这是全新安装,因此假设不会有任何数据库。
                              【解决方案26】:

                              就我而言,这只是删除锁定文件的问题。

                              sudo rm -f /tmp/mysql.sock.lock
                              

                              【讨论】:

                              • 我厌倦了一切,在 mac bigsur OS 中使用 brew 安装、卸载、清理、清除、删除数次。最后,这个解决方案对我有用。至少我已经进一步使用并能够通过终端登录到 MYSQL。谢谢!
                              【解决方案27】:

                              在为此工作了几个小时后,对我有用的是 转到 /etc/mysql/ 并编辑 my.cnf 文件。添加以下内容

                              [client]
                              port = 3306
                              socket = /var/run/mysqld/mysqld.sock
                              

                              【讨论】:

                              • 这对我也有用,尽管对于我的 os/mysql 版本它是:/etc/my.conf,并且套接字位于 /var/lib/mysql/mysql.sock /var /log/mysqld.log 应该指向套接字文件的位置。
                              • 如果skip_ssl不起作用,请在同一个文件中添加
                              【解决方案28】:

                              这解决了我重新启动 mysql 服务时的问题。运行:

                              brew services start mysql
                              

                              【讨论】:

                                【解决方案29】:

                                看起来你的 mysql 服务器没有启动。我通常运行停止命令,然后重新启动它:

                                mysqld stop
                                mysql.server start
                                

                                同样的错误,这对我有用。

                                【讨论】:

                                  【解决方案30】:

                                  对我来说这很简单:

                                  /usr/local/opt/mysql/bin/mysqld_safe

                                  而不是mysqld

                                  【讨论】:

                                  • 这对我有用。不知道为什么,但它可能与我机器上的 Mac OS 重启错误有关
                                  • 原来我每次重新启动机器时都需要运行这个命令。我很高兴我有一些东西可以让它运行起来,但我希望有一些更持久的东西
                                  猜你喜欢
                                  • 1970-01-01
                                  • 2014-03-28
                                  • 1970-01-01
                                  • 2019-02-28
                                  • 2019-01-26
                                  • 2014-11-27
                                  • 2012-06-21
                                  • 2015-03-09
                                  相关资源
                                  最近更新 更多