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


202

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

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

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


3
并未将其发布为答案,但您还必须install mysql-server打包,而不仅仅是mysql
Hanky Panky

3
@HankyPanky在您编写时可能是正确的。但在2016年的Brew没有mysql-serverinstall
jjpe

21
重要的是要注意,您是使用Homebrew安装的,因此请忽略非Homebrew提示,并使用brew services start mysql或(如果您不需要后台服务)启动(并在启动时重新启动)mysql.server start
Dave Everitt

1
我得到它的工作,但与旧的普通mysql 5.7.19。新的mysql@5.7版本5.7.24无法正常工作,因为某些配置引用保持链接到旧mysql,而不是新的brew Cellar mysql@5.7 Keg。所以,谢谢我稍后再试
KeitelDOG

1
运行此错误后也有可能发生,该错误brew upgrade将安装比以前安装的新版本的mysql。
johnsampson,

Answers:


113

可能是因为MySQL已安装但尚未运行。

要验证它是否正在运行,请打开“活动监视器”,然后在“所有进程”下搜索并确认您看到了进程“ mysqld”。

您可以通过安装“ MySQL.prefPane”来启动它。

这是对我有帮助的完整教程:http : //obscuredclarity.blogspot.in/2009/08/install-mysql-on-mac-os-x.html


95
我只是跑了而已mysqld,仅此而已,这是由于系统的某种硬性重置/关闭而导致的关机不佳所导致的问题。
ProfNandaa

2
建议的方法均无效。对我来说,它正在运行,但是,存在权限问题。跑步sudo chown -R _mysql:mysql /usr/local/var/mysql && sudo brew services restart mysql@5.7解决了这个问题
-FooBar

在活动监视器中查看时,mysqlId正在运行。要解决此问题,只需停止mysql,然后重新启动它即可。
JpersaudCodezit

108

您需要先启动MySQL,然后才能mysql在终端上使用该命令。为此,请运行brew services start mysql。默认情况下,brew安装时不带root密码。要保护它运行:mysql_secure_installation

要连接运行:mysql -urootroot是此处的用户名。


8
跑步sudo chown -R _mysql:mysql /usr/local/var/mysql && sudo brew services restart mysql@5.7解决了这个问题
-FooBar

1
对于那些想知道的mysql_secure_installation是mariaDB特定的脚本。
T.Woody

3
brew services start mysql成功。但是当我mysql -uroot追赶它时,仍然是同样的错误。
哈珀·古

Mac每次启动时是否有必要运行此程序,还是要消除错误/使MySQL保持运行或在启动时启动就运行它?
Connor Leech

运行一次就足够了。
Mazedul Idlam Khan

90

这是在自制安装后发生的,并且由于权限问题而发生。以下命令解决了该问题。

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start

2
你真棒@nirojan,我撞到墙上了:thumsup:
Ravi Sharma

凉。更改为另一个mac管理员帐户时,我可以解决我的问题:)
William Wong Garay,

太感谢了。我已经裂了5个多小时了。在互联网上看到了多个答案,仅此而已。
ivange94

我爱你@nirojan
浣熊

荣誉!但是当我重新启动MacBook时,我遇到了同样的问题。
少年甘丁

46

跑: brew info mysql

并按照说明进行操作。根据公式中的描述:

Set up databases to run AS YOUR USER ACCOUNT with:
    unset TMPDIR
    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

To set up base tables in another folder, or use a different user to run
mysqld, view the help for mysql_install_db:
    mysql_install_db --help

and view the MySQL documentation:
  * http://dev.mysql.com/doc/refman/5.5/en/mysql-install-db.html
  * http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html

希望这可以帮助。


35

正如其他人指出的,这是因为已安装MySQL,但该服务未运行。有很多方法可以启动MySQL服务,下面是对我有用的方法。

要启动服务:

  1. 转到“系统偏好设置”
  2. 在底部窗格中应该有MySql图标。
  3. 双击以启动“ MySQL Server Status”,然后按“ Start MySQL Server”按钮

我的环境:

Mac Yosemite 10.10.3

安装的软件包:/Volumes/mysql-advanced-5.6.24-osx10.8-x86_64


@HosMercury您可以确认已安装MySQL吗?
Ithar

我从Mysql官方网页下载并安装mysql。此解决方案对我有用。感谢:)
郑元杰

1
嗨,我也从官方网页上下载并安装了mysql,但是在首选项窗格中服务器未激活(红点),当我单击“启动sql服务器”时,它变绿了一秒钟,然后又变回红色,没发生什么事。我尝试'chown',符号链接到tmp / mysql.socket,卸载/重新安装,brew安装mysql,但是都失败了。Brew安装程序给我一个不满意的错误,这与需要Sierra或更高版本的操作系统有关。我正在跑步el capitan。任何帮助,将不胜感激。
Spencer Trinh '18

24

解决方案围绕:

  • 更改MySQL的权限

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

    sudo mysql.server start

只是要添加此处提供的许多有用的好答案,以及来自许多不同帖子的答案,如果上述命令不能为您解决此问题,请尝试指定主机,即

mysql -u root -p h127.0.0.1

对我来说,这是权限问题
pfwd

应该是:mysql -u root -p -h127.0.0.1
Duc Chi

哇,比清除我所有的本地资料更好的解决方案。这是一个快速修复!
约旦

我在上面尝试过,但最终成功了:sudo chown -R $(whoami)$(brew --prefix)/ *
Kiran Ruth R

15

警告-此方法将删除您的所有数据库 /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文件夹中)。
约翰·桑普森

13

以下是我提供的最新说明,brew install mysql以便对此问题进行较新的搜索可以受益:

$ brew install mysql
==> Downloading https://homebrew.bintray.com/bottles/mysql-5.6.26.yosemite.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring mysql-5.6.26.yosemite.bottle.1.tar.gz

To connect:
    mysql -uroot

To have launchd start mysql at login:
  ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
  mysql.server start

以我为例,我现在通过通过mysql加载launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist,然后能够启动$ mysql并继续运行。

我希望这对最近的疑难解答者有帮助!


11

看起来您的mysql服务器未启动。我通常运行s​​top命令,然后再次启动它:

mysqld stop
mysql.server start

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


9

当我重新启动mysql服务时,这解决了我的问题。赶紧跑:

brew services start mysql

8

/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

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


2
这将很可能解决该问题,但是警告未来的读者,这将清除您的所有数据库。基本上,这是对MySQL的重新安装。我知道问题的背景是全新安装,但是某些正在扫描的人可能只是尝试这样做,而不知道它可能对现有/生产安装造成的损害。
efru

1
这实际上不是解决方案。这是“您是否尝试过重新打开和关闭它?”
Berry M.

6

ug,这花了我一段时间才能弄清楚。我在评论中看到了。使用brew安装mysql之后,并启动服务(也许使用sudo brew services start mysql),然后运行:

$ mysqld

之后,MySQL应该为您运行。


5

对我来说,运行起来很简单:

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

代替 mysqld


1
这对我有用。不知道为什么,但是这可能与我的计算机上的Mac OS重新启动错误有关
kraftydevil

3

我找到了解决我问题的方法。确实是因为我的MySQL服务器未运行。

这是由于MySQL无法在我的计算机上正确设置而导致无法运行。

为了解决这个问题,我使用了一个在Mac OSX Mountain Lion上安装MySQL的脚本必须已安装丢失的文件。

这是链接:http : //code.macminivault.com/

重要说明: 此脚本将root密码设置为随机生成的字符串,并将其保存在Desktop上,因此请注意不要删除此文件并记下密码。它还会在您的系统偏好设置中安装MySQL管理器。我也不确定是否要删除任何现有的数据库,因此请注意这一点。




2

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

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

1
这也对我有用,尽管对于我的os / mysql版本,它是:/etc/my.conf,并且套接字位于/var/lib/mysql/mysql.sock /var/log/mysqld.log应该指向您到套接字文件所在的位置。
keithpjolley

1

我已经尝试了所有可能的方法来解决此问题,例如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。您能详细说明一下吗?谢谢。
Spencer Trinh '18

1

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


2
解释与问题的关系。
mentallurg

1

我建议你跑步

  mysql.server start

去之前

  mysql -u root -p

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

在没有运行mysql服务器的情况下,启动/重启机器的次数很多次。


1

我继续回到这篇文章,我多次遇到此错误。全新安装后,可能与导入所有数据库有关。

我正在使用自制软件。唯一为我修复的问题:

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

今天早上,在我的机器决定关闭一夜后,问题再次出现。现在唯一可以解决的问题是升级mysql。

brew upgrade mysql

0

以我为例,在安装MAMP之后,从终端访问mysql时会给出相同的套接字错误。最后,它只需要重新启动即可正常工作。


0

这里还有许多其他有用的响应,但对我而言,没有任何解决方法。最终,我在该站点或其他站点上找不到的任何软件都无法从Homebrew获得任何版本的MySQL。

只需从https://dev.mysql.com/downloads/file/?id=479114下载DMG (查找所需的适当版本)并让向导为我安装DMG就是一件非常容易的事。唯一的其他手动步骤是添加/usr/local/mysql/bin到我的PATH。

如果brew给您带来麻烦,我建议您使用此选项。

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


我也通过DMG文件安装,但仍然收到此套接字错误。mysql --version对我和--help都有效,但是没有别的。我添加了path以使--version和--help命令正常工作。您能提供一些建议吗?谢谢。
Spencer Trinh,

请参阅有关首先清除mysql的更新。这已经为我自己和几个同事解决了。
Patrick

0

试试这个

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

0

升级到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

0

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

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

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

-4
  1. 卸载MySQL。
  2. 删除/usr/local/var/mysql/
  3. 安装MySQL。

1
这不会破坏您可能拥有的所有数据库吗?对我来说,这似乎是一个比较笨拙的解决方案,尤其是考虑到这可能只是MySQL无法运行的问题。
马丁·图尔诺伊

是的,但是,根据问题,这是一个全新的安装,因此假设是将有任何数据库。
Amod Kulkarni
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.