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

时间:2013-10-29 12:58:04

标签: mysql ubuntu

我收到此错误

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 -u root -p

访问mysql时出现数据库连接错误以及上述错误

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

    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)

34 个答案:

答案 0 :(得分:48)

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

ps ax | grep mysql

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

sudo service mysql start

或尝试

sudo /etc/init.d/mysql start

答案 1 :(得分:12)

当我在我的系统上安装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并且它运行没有错误。 希望这可以解决你的问题。

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

答案 2 :(得分: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

答案 3 :(得分:9)

这花了我很多年才弄清楚,但你可以试试吗 -

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 - 使用nano of vi配置mysqld.cnf

sudo nano /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。

希望这有帮助

Code.Ph0y

答案 4 :(得分:4)

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

  

无法通过套接字

连接到本地MySQL服务器      

&#39; /var/lib/mysql/mysql.sock' (111)

因为我忘了开始我的mariadb。 只需在你的终端上输入这个命令。

systemctl start mariadb.service

答案 5 :(得分:3)

我用

删除了与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 update

     

sudo apt-get install mysql-server

然后用

启动它
  

mysql -u root -p

后跟密码

答案 6 :(得分:3)

这是一个提出不同解决方案的旧版本,但它们都不适用于我。我添加了这个答案,希望它会帮助那些在我身上挣扎一段时间的人。

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

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

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

chown -R mysql:mysql .

答案 7 :(得分:3)

您可能缺少mysql-server。使用

安装它
sudo apt-get install mysql-server

答案 8 :(得分:2)

这对我有用

sudo /etc/init.d/mysql start

首先我试过这个,但我不明白为什么它不会这样做

sudo service mysql start

答案 9 :(得分:2)

我的系统也出现了同样的错误。我不得不删除mysql-server并重新安装它。不是其他方式。尝试运行这些命令:

  1. sudo apt-get purge mysql-server
  2. sudo apt-get autoremove
  3. sudo apt-get install mysql-server

答案 10 :(得分:2)

关于Debian 这对我来说是一个绑定问题,因此将bind-addresslocalhost更改为0.0.0.0会有所帮助。

vim /etc/mysql/my.cnf 

bind-address = 0.0.0.0

答案 11 :(得分:2)

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

<强> 步骤 1.在终端中运行

  

ps ax | grep mysql

结果是

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

11514 pts / 0 S + 0:00 grep mysql

<强> 步骤 2.再次输入

  

sudo service mysql start

问题解决了。

感谢 Wellington Lorindo

答案 12 :(得分:2)

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

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

第二:我查了一下error.log,我发现了下一次按摩,

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

第三:我将my.conf重置为默认值,然后重新启动,此问题已解决。

我希望这会有所帮助。

答案 13 :(得分:1)

您不需要重新安装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

答案 14 :(得分:1)

如果修改max_connections文件中的my.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

答案 15 :(得分: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,它有效,希望有帮助。

答案 16 :(得分:1)

在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

答案 17 :(得分:1)

我遇到了问题。

这个过程对我有用:

  

确保在删除过程中选择删除数据库。

FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
    // this part is optional
shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { ... });

答案 18 :(得分:0)

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

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

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

~ cd /tmp 

/tmp ls 

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

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文件,这解决了我的问题)

希望这会有所帮助:)

答案 19 :(得分: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's answer中的这些命令卸载所有mysql并重新安装:

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

现在我解决了它,错误是GONE。

答案 20 :(得分:0)

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

答案 21 :(得分:0)

尝试一下:

sudo dpkg-reconfigure mysql-server-{version_number}

version_number应该是mysql版本号。例如

sudo dpkg-reconfigure mysql-server-5.6

然后像这样访问mysql:

mysql -u root -p

答案 22 :(得分:0)

我使用命令cd /var/lib/mysql检查了mysql-error.log文件tail -n 200 mysql-error.log目录中[ERROR]目录中的mysql日志,并确定( /etc/init.d/mysql start )是 my.ini 中的两个错误变量,删除它们后,我可以使用命令service mysql start或{{1}} < / p>

答案 23 :(得分:0)

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

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

你必须调整其中一个。

答案 24 :(得分:0)

我也遇到了这个错误,需要将近3个小时才能找到它。

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

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

答案 25 :(得分:0)

由于my.cnf文件中进行了一些不必要的更改,因此会出现此问题。 尝试使用一个工作的mysql服务器my.cnf文件来区分/etc/mysql/my.cnf

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

答案 26 :(得分:0)

请注意,在使用apt-get upgrade升级我的Ubuntu 14.04发行版后,我遇到了这个问题。我必须完全清除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

希望这有帮助。

答案 27 :(得分:0)

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

答案 28 :(得分: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并按回车键。感谢

答案 29 :(得分:0)

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

答案 30 :(得分:0)

确保/ etc /中my.cnf文件中的bind address配置选项与localhost或virtual serve ip address相同。 另外检查以确保用于创建套接字文件的目录已经明确指定。

答案 31 :(得分:0)

两个主要原因:

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

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

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

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

这意味着它正常运行。

答案 32 :(得分:-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;

答案 33 :(得分:-4)

rm -rf mysql.sock

service mysqld restart