【问题标题】:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysql.sock' (2)ERROR 2002 (HY000): 无法通过套接字 '/var/run/mysqld/mysql.sock' 连接到本地 MySQL 服务器 (2)
【发布时间】:2013-11-08 15:32:32
【问题描述】:

我收到了这个错误

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)

【问题讨论】:

标签: mysql ubuntu


【解决方案1】:

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

ps ax | grep mysql

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

sudo service mysql start

或者试试

sudo /etc/init.d/mysql start

【讨论】:

  • 它说服务无法识别!
  • 试试 sudo /etc/init.d/mysql start
  • sudo /etc/init.d/mysql start 帮助了我。谢谢
  • etc/init.d中没有mysql!
  • 这帮助了我 sudo /etc/init.d/mysql start
【解决方案2】:

首先,请确认已安装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

【讨论】:

  • 更新 ubuntu 后我的安装损坏了;干净的安装给了我信心
  • 这对我有用,虽然前三个命令不需要清理
【解决方案3】:

我花了很长时间才弄明白,但你能不能试试 -

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

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。

希望对你有帮助

代码.Ph0y

【讨论】:

    【解决方案4】:

    我在系统上安装 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,它运行时没有出现错误。 希望这能解决你的问题。

    如果目录不存在,记得创建它。

    【讨论】:

    • 当访问被拒绝时也应该使用 sudo(用于创建文件夹和符号链接)
    【解决方案5】:

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

    [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
    

    【讨论】:

    • 什么服务器设置?在哪里?这是一个需要编辑的文件,还是应该预先设置?请解释一下。
    • @DaveWalley 我猜他指的是my.cnf file
    • 当然,通常它位于 /etc/my.cnf 或 /etc/mysql/my.cnf
    【解决方案6】:

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

    【讨论】:

    • 6.mysql -u root-p 这一步应该有root权限,比如sudo mysql -u root-p
    【解决方案7】:

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

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

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

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

    systemctl start mariadb.service
    

    【讨论】:

    • 过去 2 小时以来我一直在为这个错误而苦苦挣扎。
    • 它在 linux 上有所不同,这对某些人没有帮助。我什至没有安装 mariadb
    【解决方案8】:

    在 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
    

    【讨论】:

      【解决方案9】:

      我删除了与 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 root -p

      后跟密码

      【讨论】:

        【解决方案10】:

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

        sudo apt-get install mysql-server
        

        【讨论】:

        • "尽管我已经设法在 ubuntu 中通过命令行启动了 mysql"
        【解决方案11】:

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

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

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

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

        chown -R mysql:mysql .
        

        【讨论】:

          【解决方案12】:

          我遇到了问题。

          这个过程对我有用:

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

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

          【讨论】:

            【解决方案13】:

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

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

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

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

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

            我希望这会有所帮助。

            【讨论】:

              【解决方案14】:

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

              步骤 1.终端运行

              ps 斧头 | grep mysql

              结果是

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

              11514 pts/0 S+ 0:00 grep mysql

              步骤 2.再次输入这个

              sudo 服务 mysql 启动

              问题解决了。

              谢谢惠灵顿洛林多

              【讨论】:

                【解决方案15】:

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

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

                【讨论】:

                  【解决方案16】:

                  这对我有用

                  sudo /etc/init.d/mysql start
                  

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

                  sudo service mysql start
                  

                  【讨论】:

                    【解决方案17】:

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

                    vim /etc/mysql/my.cnf 
                    

                    bind-address = 0.0.0.0

                    【讨论】:

                    • 在Ubuntu上遇到同样的情况,我们的服务团队已经移动服务器并更改了IP地址,并且在打开机器后MySQL开始出现故障。我已经更新了/etc/mysql/my.cnf 中的 IP 地址,然后按照这里的大多数答案建议做了/etc/init.d/mysql start
                    【解决方案18】:

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

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

                    【讨论】:

                    • 您运行的是哪个 Linux 发行版?你提到 selinux 所以我猜是 CentOS .... 我正在运行 Ubuntu 并遇到同样的问题..
                    【解决方案19】:

                    如果您修改 my.cnf 文件中的 max_connections,您还有可能遇到此特定错误。

                    我也遇到了同样的错误,导致我无法登录 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)
                    

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

                    sudo /etc/init.d/mysql start
                    

                    【讨论】:

                      【解决方案20】:

                      试试这个:

                      sudo dpkg-reconfigure mysql-server-{version_number}
                      

                      version_number 应该是 mysql 版本号。例如

                      sudo dpkg-reconfigure mysql-server-5.6
                      

                      然后像这样访问mysql:

                      mysql -u root -p
                      

                      【讨论】:

                        【解决方案21】:

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

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

                        你必须调整一个或另一个。

                        【讨论】:

                        • 我可以访问网站并访问数据库,但我无法通过命令行访问它,仍然出现相同的错误
                        • 如何适应mysql?
                        • @AdiPrasetyo 通过编辑所涉及的配置文件指向同一个文件。
                        • 不知道怎么做,需要你的assist
                        【解决方案22】:

                        两个主要原因:

                        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

                        这意味着它运行正常。

                        【讨论】:

                          【解决方案23】:

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

                          【讨论】:

                            【解决方案24】:

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

                            【讨论】:

                              【解决方案25】:

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

                               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 并按回车键。谢谢

                              【讨论】:

                                【解决方案26】:

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

                                【讨论】:

                                  【解决方案27】:

                                  请注意,在使用 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
                                  

                                  希望这会有所帮助。

                                  【讨论】:

                                    【解决方案28】:

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

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

                                    【讨论】:

                                      【解决方案29】:

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

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

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

                                      【讨论】:

                                        【解决方案30】:

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

                                        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
                                        

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

                                        【讨论】:

                                          猜你喜欢
                                          • 2012-07-24
                                          • 1970-01-01
                                          • 1970-01-01
                                          • 1970-01-01
                                          相关资源
                                          最近更新 更多