错误 2002 (HY000): 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器

Posted

技术标签:

【中文标题】错误 2002 (HY000): 无法通过套接字 \'/tmp/mysql.sock\' 连接到本地 MySQL 服务器【英文标题】: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。 【参考方案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 设置一样好:

    安装 Docker 确保 docker 正在运行(只需打开 Docker 桌面应用程序) 在终端上运行此命令 -> docker pull mysql 运行以下命令,您的 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。

    用 brew 卸载 mysql:

    brew uninstall mysql

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

    brew install mysql@8.0 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】:
    卸载 MySQL。 删除/usr/local/var/mysql/。 安装 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 重启错误有关 原来我每次重新启动机器时都需要运行这个命令。我很高兴我有一些东西可以让它运行起来,但我希望有一些更持久的东西

以上是关于错误 2002 (HY000): 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器的主要内容,如果未能解决你的问题,请参考以下文章

mysqli::mysqli(): (HY000/2002): 无法通过套接字 'MySQL' 连接到本地 MySQL 服务器 (2)

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

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

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

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

Mac 终端/ MySQL 配置问题 | ERROR 2002 (HY000): 无法通过套接字 '/tmp/mysql.sock' 连接到本地 MySQL 服务器 (2)