错误 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-server
到 install
。
请务必注意您使用 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)