51

我收到此错误

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

即使我已经设法通过 ubuntu 中的命令行启动 mysql

mysql stop/waiting
mysql start/running, process 17691

但是,当尝试访问该站点时,我在尝试通过访问 mysql 时遇到数据库连接错误以及上述错误mysql -u root -p

我检查了我的错误日志,我看到了这个

    131029 12:53:34 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be remo$
    131029 12:53:34 [Note] Plugin 'FEDERATED' is disabled.
    131029 12:53:34 InnoDB: The InnoDB memory heap is disabled
    131029 12:53:34 InnoDB: Mutexes and rw_locks use GCC atomic builtins
    131029 12:53:34 InnoDB: Compressed tables use zlib 1.2.3.4
    131029 12:53:34 InnoDB: Initializing buffer pool, size = 26.0G
    131029 12:53:36 InnoDB: Completed initialization of buffer pool
    131029 12:53:36 InnoDB: highest supported file format is Barracuda.
    131029 12:53:38  InnoDB: Waiting for the background threads to start
    131029 12:53:39 InnoDB: 5.5.34 started; log sequence number 5146431500
    131029 12:53:39 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
    131029 12:53:39 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
    131029 12:53:39 [Note] Server socket created on IP: '0.0.0.0'.
    131029 12:53:39 [Note] Event Scheduler: Loaded 0 events
    131029 12:53:39 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.5.34-0ubuntu0.12.04.1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

这是我第一次看到这个错误,我不知道如何解决这个问题,请在这里帮帮我。

谢谢

更新

好的,我尝试了 glglgl 的解决方案,重新启动后,我在错误日志中得到以下信息:

    131029 13:17:36 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be remo$
    131029 13:17:36 [Note] Plugin 'FEDERATED' is disabled.
    131029 13:17:36 InnoDB: The InnoDB memory heap is disabled
    131029 13:17:36 InnoDB: Mutexes and rw_locks use GCC atomic builtins
    131029 13:17:36 InnoDB: Compressed tables use zlib 1.2.3.4
    131029 13:17:36 InnoDB: Initializing buffer pool, size = 26.0G
    131029 13:17:38 InnoDB: Completed initialization of buffer pool
    131029 13:17:38 InnoDB: highest supported file format is Barracuda.
    131029 13:17:40  InnoDB: Waiting for the background threads to start
    131029 13:17:41 InnoDB: 5.5.34 started; log sequence number 5146431500
    131029 13:17:41 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
    131029 13:17:41 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
    131029 13:17:41 [Note] Server socket created on IP: '127.0.0.1'.  
    131029 13:17:41 [Note] Event Scheduler: Loaded 0 events
    131029 13:17:41 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.5.34-0ubuntu0.12.04.1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)
4

36 回答 36

61

检查进程是否在 Ubuntu 12.04 上运行,我的问题已解决

ps ax | grep mysql

然后答案是它没有运行,所以我运行了

sudo service mysql start

或者试试

sudo /etc/init.d/mysql start
于 2013-12-14T13:37:31.147 回答
47

首先,请确认 mysql-server 已安装。安装 mysql-server 但不知何故损坏时,我遇到了同样的错误。我通过完全卸载mysql并重新安装它来做到这一点。

sudo apt-get remove --purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mysql-server mysql-client
于 2016-04-09T10:44:04.640 回答
15

这花了我很长时间才弄清楚,但你能试试同样的 -

1 - 更新和升级

sudo apt-get update
sudo apt-get upgrade

2 - 清除 MySQL 服务器和客户端(如果已安装)。

sudo apt-get purge mysql-server mysql-client

3 - 全新安装 MySQL 服务器和客户端

sudo apt-get install mysql-server mysql-client

4 - 测试 MySQL

mysql -u root -p
> enter root password

*** 应该在 /var/run/mysqld/mysql.sock 中找不到套接字

4 - 用 vi 的 nano 配置 mysqld.cnf

须藤纳米 /etc/mysql/mysql.conf.d/mysqld.cnf

将绑定地址从 127.0.0.1 更改为 localhost

bind-address            = localhost

** 写入并退出

5 - 重启 MySQL

sudo /etc/init.d/mysql restart

6 - 检查mysql

mysql -u root -p
> enter root password

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.13-0ubuntu0.16.04.2 (Ubuntu)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

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>

你现在应该进入 mysql cli。

希望这可以帮助

代码.Ph0y

于 2016-09-10T04:56:25.037 回答
14

当我在我的系统上安装 xampp 时,我遇到了同样的问题。mysql 服务器查找 /var/run/mysqld/mysqld.sock 但 mysql.sock 文件位于 xampp 文件夹中,所以我使用

 find / -name '*.sock'

找到mysql.sock文件然后使用

ln -s <the file location> /var/run/mysqld/mysqld.sock

获取 *.sock 文件的链接,然后尝试使用 mysql 并运行没有错误。希望这可以解决你的问题。

如果目录不存在,请记住创建目录。

于 2013-10-30T09:15:23.473 回答
10

客户端设置应与服务器设置一致。

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

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
于 2013-12-25T02:39:10.590 回答
9

您不需要重新安装 MySQL 服务器 我遇到了同样的问题,但我已经通过运行这些命令解决了这个问题。

  1. ps -A|grep mysql
  2. sudo pkill mysql
  3. ps -A|grep mysqld
  4. sudo pkill mysqld
  5. sudo service mysql restart
  6. mysql -u root -p
于 2019-01-10T09:27:00.323 回答
7

最近我在我的mysql中遇到了这个错误 ERROR 2002 (HY000)

无法通过套接字连接到本地 MySQL 服务器

'/var/lib/mysql/mysql.sock' (111)

因为我忘记启动我的mariadb。只需在您的终端上输入此命令。

systemctl start mariadb.service
于 2015-11-30T04:24:26.197 回答
5

在 linux 终端中,我运行以下步骤,他们帮助了我

1.首先列出所有安装的mysql包

  sudo dpkg -l | grep mysql

2.使用列出的命令删除列出的包

  sudo apt-get --purge autoremove <package name>

3.重新安装mysql服务器

  sudo apt-get install mysql-server

这对我有用,希望这也对你有用。

或者尝试

sudo apt-get remove --purge mysql-\

然后重新安装

sudo apt-get install mysql-server mysql-client
于 2018-01-02T12:02:13.003 回答
4

我删除了连接到mysql的所有内容

sudo apt-get remove --purge --auto-remove mysql-client-5.7 mysql-client-core-5.7 mysql-common mysql-server-5.7

sudo rm -r /etc/mysql* /var/lib/mysql* /var/log/mysql*

然后重新安装它

sudo apt-get 更新

sudo apt-get install mysql-server

然后开始

mysql -u 根目录 -p

后跟密码

于 2018-05-30T14:02:06.177 回答
3

我有问题。

这个过程对我有用:

确保在删除过程中选择“否”来删除数据库。

sudo apt-get remove --purge mysql*

sudo apt-get autoremove

sudo apt-get autoclean

sudo apt-get install mysql-server mysql-client
于 2017-09-07T15:16:33.617 回答
3

您可能缺少 mysql-server。使用安装它

sudo apt-get install mysql-server
于 2015-09-02T09:28:13.800 回答
3

这是一个旧的胎面,提出了不同的解决方案,但没有一个对我有用。我正在添加这个答案,希望它能帮助那些像我一样挣扎了一段时间的人。

我已经检查了所有现有的答案和所有现有的解决方案,但对我来说,问题是var/run/mysql文件夹的用户权限不正确。

我已经检查了该文件夹的用户权限,并将其设置为root. 一旦我更改为mysql:mysql问题就消失了。

因此输入/var/run/mysqld并将用户权限更改为:

chown -R mysql:mysql .
于 2016-11-27T15:18:44.603 回答
2

更改 my.cnf 后我遇到了同样的问题。我在接下来的步骤中解决了这个问题。

首先:要找到error.log的位置,查看'my.conf'。

第二:我查了error.log,我找到了下一个按摩,

“未知变量'default-......'” .....“ mysqld_safe 从 /var/lib/mysql 启动 mysqld darmon”

第三:我把my.conf重置为默认,然后重启,这个问题就解决了。

我希望这有帮助。

于 2014-03-03T03:43:53.190 回答
2

我已关注Wellington Lorindo 的帖子。我的问题解决了。

步骤 1. 在终端中运行

ps斧头| grep mysql

结果是

11200 ? ssl 0:01 /usr/sbin/mysqld

11514 点/0 S+ 0:00 grep mysql

步骤 2. 再次输入

sudo 服务 mysql 启动

并且问题解决了。

谢谢惠灵顿洛林多

于 2014-08-23T08:27:10.773 回答
2

这对我有用

sudo /etc/init.d/mysql start

首先我尝试了这个,但我不明白为什么它不能这样工作

sudo service mysql start
于 2016-08-27T16:10:29.883 回答
2

我的系统也发生了同样的错误。我不得不删除 mysql-server 并重新安装它。没有别的办法。尝试运行这些命令它可以工作:

  1. sudo apt-get purge mysql-server
  2. sudo apt-get 自动删除
  3. sudo apt-get install mysql-server
于 2016-01-07T04:53:52.557 回答
2

在 Debian 上,这对我来说是一个绑定问题,因此bind-addresslocalhost0.0.0.0 更改为有帮助。

vim /etc/mysql/my.cnf 

bind-address = 0.0.0.0

于 2017-07-12T06:51:54.827 回答
1

max_connections如果您修改inmy.cnf文件,您还有机会获得此特定错误。

我也遇到了同样的错误,它没有让我登录到 MySQL 服务器。就我而言,问题是,我不得不max_connections增加

/etc/mysql/my.cnf

set-variable = max_connections = 5000

由于这个原因,第二天当我盯着 MySQL 服务器时,它抛出了这个错误

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

从文件中删除set-variable = max_connections = 5000段就可以了。my.conf删除该特定段后,使用了以下命令。MySQL 服务器像以前一样启动并运行。

sudo /etc/init.d/mysql start
于 2015-02-08T03:01:18.293 回答
1

我也遇到了这个问题。 mysql -u root -p 输入密码: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)

然后我发现原因是我selinux正在执行,我禁用它然后重新启动mysqld,它可以工作,希望有帮助。

于 2014-04-21T09:45:26.557 回答
1

尝试这个:

sudo dpkg-reconfigure mysql-server-{version_number}

version_number应该是mysql版本号。例如

sudo dpkg-reconfigure mysql-server-5.6

然后像这样访问mysql:

mysql -u root -p
于 2018-11-02T09:10:50.867 回答
0

如果你仔细观察,你会发现不同之处:

  • 服务器监听/var/run/mysqld/mysqld.sock
  • 客户端尝试连接到/var/run/mysqld/mysql.sock

您必须调整其中一个。

于 2013-10-29T13:04:14.630 回答
0

由于在 my.cnf 文件中进行了一些不必要的更改,将出现此问题。尝试/etc/mysql/my.cnf与其中一台工作的 mysql 服务器 my.cnf 文件进行比较。

我刚刚/etc/mysql/my.cnf用新的 my.cnf 文件替换了文件,这对我有用。

于 2016-09-29T07:14:43.453 回答
0

一旦你安装或更新 MySQL,它不会要求你创建 root 密码。在这种情况下:您将拥有名为“ debian.cnf ”的文件路径:/etc/mysql。您将找到用户名和密码,使用该凭据登录并创建新的用户名和密码。

于 2018-05-15T16:28:08.957 回答
0

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

当我在使用 brew 安装 MYSQL 后尝试登录到 MYSQL 时出现上述错误,我正在运行 MacOs,哦,是的,我还注意到 mysql 正在运行我已经重新启动了很多次,但没有运气解决问题以及删除 mysql 和多次重新安装!

如此简单,我可以打自己一巴掌,不,但真的,我通过 CD 解决了这个问题到包含 mysqlx.sock 和 mysql.sock.lock 文件的临时文件夹中,我只删除了单个 sock.lock 文件,这样做之后解决了我的问题我可以使用 mysql -uroot 命令登录到 mysql。这是我使用的命令。(这个问题让我挂了一段时间)

~ cd /tmp 

/tmp ls 

(这将列出 temp 文件夹中的所有 sock 文件,输出如下所示)

com.apple.launchd.8AgGW2s9Bb mysql.sock.lock
com.apple.launchd.batxrSISAJ mysqlx.sock
com.apple.launchd.cRCaxtT41m mysqlx.sock.lock
com.google.Keystone          powerlog

然后运行

rm -R mysql.sock.lock 

(使用上面的命令从 /tmp 目录中删除 sock.lock 文件,这解决了我的问题)

希望这有帮助:)

于 2020-05-11T22:42:42.973 回答
0

两个主要原因:

1) mysql-server 没有安装!您必须安装它(mysql-server 而不是 mysql-client)并运行它。

2)它默认安装并运行。因此,不可能通过 Xampp 或 Lampp 再次运行它。你必须停止它:sudo service mysql stop

然后你可以通过 Xampp 启动它。可以使用以下代码检查它是否正在运行:sudo netstat -tap | grep mysql

如果你看到这样的结果: tcp 0 0 localhost:mysql : LISTEN 1043/mysqld

这意味着它运行正常。

于 2015-07-26T21:49:09.483 回答
0

我有同样的问题,并尝试了这里发布的所有解决方案,例如:

sudo apt-get autoremove mysql-server

但不幸的是,它在 ubuntu 16.04 上对我不起作用。要卸载正确的软件包,您需要:

sudo apt-get remove mysql-

当您尝试使用tab命令自动完成时,它将列出以下包:

mysql-client           mysql-client-core-5.7  mysql-server           mysql-server-core-5.7  mysql-workbench        mythes-en-us           
mysql-client-5.7       mysql-common           mysql-server-5.7       mysql-utilities        mysql-workbench-data   

显然选择了,mysql-server-core-5.7所以它会是:

sudo apt-get remove mysql-server-core-5.7

现在您可以使用johnny 回答中的这些命令卸载所有 mysql 并重新安装:

sudo apt-get remove --purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get install mysql-server mysql-client

现在我解决了,错误消失了。

于 2017-06-16T04:24:27.460 回答
0

简单:运行这些代码:::

 1:: ls -lart/var/run/my*

   2::mkdir /var/run/mysqld

    3::touch /var/run/mysqld/mysqld.sock
    4:ls -lart /var/run/mysqld
    5::chown -R mysql /var/run/mysqld
    6::ls -lart /var/run/mysqld
REstart your mysql server

然后最后键入 mysql -u root 或 mysql -u root -p 并按回车键。谢谢

于 2016-03-01T23:34:51.323 回答
0

确保 /etc/ 中 my.cnf 文件中的绑定地址配置选项与 localhost 或虚拟服务 ip 地址相同。加上检查以确保正确指定了创建套接字文件的目录。

于 2015-10-07T13:46:03.677 回答
0

请注意,在使用apt-get upgrade. 我必须完全清除mysql-servermysql-client重新安装它来解决这个问题。

sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get purge mysql-server mysql-client
sudo apt-get install mysql-server mysql-client

希望这可以帮助。

于 2016-08-06T20:38:45.960 回答
0

我也被这个错误困住了,花了将近 3 个小时才找到它。

首先,尝试回忆您对 conf 文件所做的更改,然后撤消更改并保存文件并启动 mysql。如果要对 conf 文件进行任何更改,请停止 mysql 服务器,然后更改所需的值并重新启动 mysql。

发生此错误是因为对 conf 文件进行了不正确的(错误的关键字或分配的值)更改。大多数情况下即使您重新启动运行服务器的机器也会发生此错误,因为服务器已停止,在这种情况下,请启动 mysql 服务器。

于 2017-05-18T13:38:16.553 回答
0

我使用命令检查了文件cd /var/lib/mysql目录中的 mysql 日志,并确定 ( ) my.ini中有两个错误的变量,删除它们后,我能够使用命令或启动 mysql 服务mysql-error.logtail -n 200 mysql-error.log[ERROR]/etc/init.d/mysql startservice mysql start

于 2019-09-11T17:53:40.293 回答
0

如果问题与您有关,这提供了替代解决方案。如果您的磁盘驱动器已满,则 MYSQL 服务器(和大多数其他程序)将无法启动。删除文件和文件夹以允许 Mysql-server 启动。

于 2015-12-04T13:57:32.410 回答
0

如果您在带有 ubuntu 的 Windows 10 上使用 wsl,您可以运行:

  • sudo /etc/init.d/mysql start 该命令将sudo service start mysql不起作用,因为您需要对其进行配置。你可以在这里找到如何
于 2021-11-21T17:45:44.450 回答
0

在我的情况下,问题是我在 my.cnf 中添加了“default-character-set=utf8”,这破坏了文件。而是将该行更改为“character_set_server=utf8”。那应该可以解决它,希望这会有所帮助。

于 2016-04-02T11:22:10.563 回答
-1

你必须这样做:

ls -lart /var/run/mysqld/
mkdir /var/run/mysqld
touch /var/run/mysqld/myssqld.sock
ls -lart /var/run/mysqld/
chown -R mysql /var/run/mysqld/
ls -lart /var/run/mysqld/
/etc/init.d/mysql restart

然后像这样访问:

mysql -u root -p
mysql> show databases;
于 2015-02-01T12:00:24.933 回答
-4
rm -rf mysql.sock

服务 mysqld 重启

于 2014-10-27T14:10:08.760 回答