无法通过 socket’/tmp/MySQL.sock’(2)连接到本地 MySQL 服务器

我已经安装了 MySQL 服务器,并试图连接到它,但得到的错误:

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

我已经检查了我的/tmp 目录,没有 mysql.sock。我到处都找不到我的袜子。我听说它可能在

    /var/lib/mysql/mysql.sock

但是我也检查了那里,那里甚至没有 mysql 目录,只有/lib 中的一些后缀。有人能帮我解决这个问题吗?

279282 次浏览

/etc/my.cnf中的 mysql 配置文件中进行以下更改,然后重新启动 mysqld dameon 进程

[client]
socket=/var/lib/mysql/mysql.sock

再看看这个相关的帖子

不能通过套接字连接到本地 MySQL 服务器

以下解决了我的问题:

检查 MySQL 服务器正在监听的位置: netstat-nlp 如果它正在监听 TCP,那么在连接到 DB 时使用127.0.0.1代替“ localhost”

检查 MySQL 文档 给你

尝试启动 MySQL 服务器:

mysql.server start

升级 OS X Yosemite 之后我也遇到了同样的问题,解决方案很简单,检查系统偏好-> mysql,状态是 STOP。只要重新启动,就能在我的 Mac 上正常工作了。

MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

来自 https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

更新: 每次我的计算机重新启动,我必须输入这个命令,所以我创建了一个快捷方式。

在终端类型中执行下列操作:

~: vi ~/.profile

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

保存。

终端类型:

~: ...来源于. profile 配置。

现在在终端你只需要输入

~: sockit

对于 CentOS,init mysql 的文件位于这里:

/etc/init.d/mysqld start

下面的命令解决了我的问题:

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


sudo mysql.server start

如果您在 MacOSX 中使用 XAMPP,并且已经安装了带有 Homebrew 的 MySQL,那么您可能会遇到这个问题。在 XAMPP 管理器窗口中,转到 Manage Servers 并选择 MySQL,然后单击 configure 并打开配置文件,就有了套接字文件路径,将路径放入 MySQL 主机配置中,应该就可以工作了。

是这样的:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

然后,例如在姜戈:

...
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "database_name",
"USER": "user",
"PASSWORD": "password",
"HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
"PORT": "",
}
}
...

希望这个能帮上忙。

试试这个,对我有用。

sudo /usr/local/mysql/support-files/mysql.server start

在尝试了所有解决方案之后,它只在指定主机之后对我有效

mysql -u root -p -h127.0.0.1

在询问密码时

Enter password:

按回车键

如果一切如上所述正常,它就会工作。

在挣扎了几个小时之后,唯一起作用的是

sudo mysql.server start

然后使用

mysql_secure_installation

然后通过数据库连接

mysql -uroot -p

Mysql 是通过自制安装的,版本是

Server version: 5.7.21 Homebrew

指定版本可能会有所帮助,因为解决方案可能因版本而异。

我花了很多时间做这个 我想把我的 django 应用程序在我的服务器上,当我运行 python manage.py migrate我遇到了这个问题

还有,这是我设置的 ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock 终于成功了!

首先,知道我的数据目录在哪里是关键 这里至少有一个扩展名的文件。Err 前面是我的本地机器名。里面有我需要诊断的所有信息。

我想我搞砸了,因为我先安装了 mysql 8。我的应用程序不兼容,所以我不得不降级到5.7

对我有效的解决办法就是 /usr/local/etc/my.cnf

找到这一行,如果它在这里,我想它和 mysql 8有关:

mysqlx-bind-address = 127.0.0.1

删除它,因为 mysql 5.7说它不喜欢它出现在错误日志中

如果绑定地址下面没有这一行,也可以在这里添加。

socket=/tmp/mysql.sock

转到 /tmp目录并删除其中的所有 mysql.sock 文件。在服务器启动时,它将重新创建袜子文件

使用处于停止状态的 mySQL 删除数据目录。我的是 /usr/local/var/mysql。木头就在这里

从那里我跑开了

>mysqld --initialize

然后一切开始工作... 这个命令将给你一个随机密码在结束。将密码保存到下一步

运行此命令来分配我自己的密码。

>mysql_secure_installation

都有

>brew services stop mysql@5.7

还有

>mysql.server start

现在正在工作。希望这有所帮助。这是大约3个小时的试错。

首先输入:

brew services start mysql

然后这个:

mysql -uroot

输入终端如下:

mysql.server start

从终端停止并启动 mysql 服务器解决了我的问题。 下面是在 MacO 中停止和启动 mysql 服务器的 cmds。

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

注: 从 Mac 系统首选项重新启动服务并没有解决我的 Mac 中的问题。尝试从终端重新启动。

如果你正在运行一个 macOS 系统,首先检查一下“系统偏好设置”,看看 MySQL 是否正在运行会更容易一些。

我也遇到过同样的问题,我是这样解决的。

步骤1: 使用命令删除 mysql:

brew uninstall --force mysql

步骤2: 运行命令 brew doctor,它将为您提供一些与您的酿造包相关的提示。

步骤3: 使用命令清理酿造包:

brew cleanup

步骤4: 使用以下命令移动/删除先前安装的 mysql 数据:

mv /usr/local/var/mysql/ /usr/local/var/old_mysql

步骤5: 最后使用以下命令再次安装 mysql:

brew install mysql

在服用 mysql dump 时遇到了同样的问题: 无法通过 socket’/tmp/MySQL.sock 连接到本地 MySQL 服务器

尝试显式地给出 mysql.sock 的路径。

  1. 键入 ps-ef | grep-mysql

    从这个命令中获取 mysql.sock 的路径,例如/var/lib/mysql/mysql.sock

  2. Mysqldump —— socket =/var/lib/mysql/mysql.dump-u username-pPassword

    您可以使用任何 mysql 命令尝试这样做