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

我的问题开始,我不能以rootlogin到我的MySQL安装。 我试图运行没有密码打开mysql …但是每当我运行该命令:

# mysqld_safe --skip-grant-tables & 

我永远不会得到及时的回应…(我试图按照这里的说明: http : //www.cyberciti.biz/tips/recover-mysql-root-password.html )屏幕看起来像这样:

  root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables 120816 11:40:53 mysqld_safe Logging to syslog. 120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 

我没有得到提示开始inputsql命令重置密码。

当我通过CTRL + C杀死它时,我得到以下消息:

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

检查mysqld是否正在运行,并且套接字'/var/run/mysqld/mysqld.sock'存在!

如果我重试命令并保留足够长的时间,我会得到以下一系列消息:

 root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog. 120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended [1]+ Done mysqld_safe --skip-grant-tables root@jj-SFF-PC:/run/mysqld# 

但是,如果我尝试以root身份login,请执行以下操作:

 # mysql -u root 

我收到以下错误信息:

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

我检查和/var/run/mysqld/mysqld.sock文件不存在。 该文件夹,但不是文件。
另外,我不知道如果这有帮助,但我find了一个find / -name mysqld ,它提出:

 /var/run/mysqld - folder /usr/sbin/mysqld - file /run/mysqld - folder 

我只是新的Linux和MySQL,所以我不知道这是否正常。 但我包括这个信息,以防万一它帮助…

**我终于决定卸载并重新安装MySQL。 **

 apt-get remove mysql-server apt-get remove mysql-client apt-get remove mysql-common apt-get remove phpmyadmin 

再次以上述相同的顺序重新安装所有软件包,在phpmyadmin安装过程中,它给了我同样的错误 –

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

所以我再次尝试卸载/重新安装。 这一次,我卸载软件包后,我也手动将所有的mysql文件和目录重命名为mysql.bad在各自的位置。

  /var/lib/mysql /var/lib/mysql/mysql /var/log/mysql /usr/lib/perl5/DBD/mysql /usr/lib/perl5/auto/DBD/mysql /usr/lib/mysql /usr/bin/mysql /usr/share/mysql /usr/share/dbconfig-common/internal/mysql /etc/init.d/mysql /etc/apparmor.d/abstractions/mysql /etc/mysql 

然后我试着重新安装mysql-servermysql-client 。 但是我注意到它不会提示我input密码。 是不是应该要求pipe理员密码?

要在您的系统上运行find所有套接字文件:

 sudo find / -type s 

我的Mysql服务器系统在/var/lib/mysql/mysql.sock打开了套接字

一旦find套接字被打开的位置,使用套接字文件的path添加或编辑该行到/etc/my.cnf文件中:

 socket=/var/lib/mysql/mysql.sock 

有时启动命令行可执行文件的系统启动脚本指定一个标志--socket=path 。 这个标志可以覆盖my.cnf的位置,这会导致在my.cnf文件指示的位置找不到套接字。 然后当你尝试运行mysql命令行客户端时,它将读取my.cnf来查找套接字,但是它不会find它,因为它与服务器创build的地方不同。 所以,除非你关心套接字所在的位置,只要改变my.cnf来匹配就可以了。

然后,停止mysqld进程。 你如何做到这一点将因系统而异。

如果您是Linux系统中的超级用户,如果您不知道您的Mysql安装程序使用的特定方法,请尝试以下方法之一:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • 有些系统没有设置好停止mysql的优雅方法(或者由于某种原因,mysql没有响应),你可以强制终止mysql:
    • 一步: pkill -9 mysqld
    • 两步(最不喜欢):
      • 使用pgrep mysqlps aux | grep mysql | grep -v grep查找mysql的进程ID ps aux | grep mysql | grep -v grep
      • 假设进程ID是4969kill -9 4969结束

当你这样做后,你可能想在/var/run/mysqld/查找一个pid文件并将其删除

确保您的套接字上的权限是这样的,无论用户mysqld正在运行,可以读/写它。 一个简单的testing是将其打开到完整的读/写,看看它是否仍然有效:

 chmod 777 /var/run/mysqld/mysqld.sock 

如果解决了这个问题,则可以根据您的安全设置根据需要定制套接字的权限和所有权。

另外,运行mysqld进程的用户必须能够访问套接字所在的目录。

试试这个命令,

 sudo service mysql start 

这个错误是由于多次安装的mysql造成的。 运行命令:

 ps -A|grep mysql 

通过使用以下方法杀死进程:

 sudo pkill mysql 

然后运行命令:

 ps -A|grep mysqld 

也通过运行杀死这个过程:

 sudo pkill mysqld 

现在你已经完全设置好了,只需运行下面的命令:

 service mysql restart mysql -u root -p 

有很好的工作再次

解决scheme更容易。

  1. 首先,您必须在mysql.sock文件所在的位置(在“sudo find / -type s”中)findterminal。 在我的情况是在/opt/lampp/var/mysql/mysql.sock
  2. 启动terminal并发行sudo Nautilus
    这将以超级用户权限启动您的文件pipe理器
  3. 从Nautilus导航到您的mysql.sock文件所在的位置
  4. 右键单击文件并select“ build立链接”
  5. 将链接文件重命名为mysqld.sock然后右键单击该文件并将其剪下
  6. 转到/var/run并创build一个名为mysqld的文件夹并input它
  7. 现在右键单击并粘贴链接文件
  8. 瞧! 您现在将在/var/run/mysqld/mysqld.sock有一个mysqld.sock文件:)

只需要安装后启动MySQL服务:

对于Ubuntu:

 sudo service mysql start; 

对于CentOS或RHEL:

 sudo service mysqld start; 

我面临同样的错误,发现这是由于包的升级,所以重新启动我的系统后,我解决了错误。

我认为,由于SQL库/包更新发生错误,所以试试这个,如果你正在做一些升级:)

好吧,只需复制并粘贴这些代码:这应该是在terminal,服务器内,当你的MySQL数据库没有正确安装,当你得到这个错误:'不能连接到本地MySQL服务器通过套接字/ var / run / mysqld / mysqld.sock'(2)'。

停止MySql

 sudo /etc/init.d/mysqld stop 

重新启动它或启动它

 sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start 

build立一个这样的链接,并将其交给系统

 ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock 

运行一个安全的安装,指导您configurationmysql所需的所有过程

 /usr/bin/mysql_secure_installation 

这个问题有很多原因,但有时只是重新启动mysql服务器,它将解决这个问题。

 sudo service mysql restart 

在MySQL 5.6和5.7上有一个bug,当MySQL服务停止或重新启动时, var/run/mysqld/将会消失。 这可以防止MySQL运行。 发现这个解决方法,这是不完美的,但至less它停止/重新启动后运行:

 mkdir /var/run/mysqld/ chown mysqld /var/run/mysqld/ 

用户加载步骤的答案对我有效。 有时候需要编辑/etc/mysql/my.cnf的文件,把行添加到客户端

 [client] password = your_mysql_root_password port = 3306 host = 127.0.0.1 socket = /var/lib/mysql/mysql.sock 

*错误:'无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'(2)'

解决scheme

最后卸载并重新安装mysql。 **

  • sudo apt-get删除mysql-server
  • sudo apt-get删除mysql-client
  • sudo apt-get删除mysql-common
  • sudo apt-get删除phpmyadmin

然后再次安装

  • sudo apt-get install mysql-server-5.6

完成此操作后,将使用164 MB的额外磁盘空间。

  • 你想继续吗? [Y / n]是按YES完成安装

…… …….

  • 最后你会得到这些线….

    设置libhtml-template-perl(2.95-1)…

    设置mysql-common-5.6(5.6.16-1〜exp1)…处理libc-bin的触发器(2.19-0ubuntu6)处理ureadahead的触发器(0.100.0-16)…

  • 接着

    root @ ubuntu1404:〜#mysql -u root -p(对于每个密码,首先你应该使用)

  • input密码:

  • 注意:input的密码应该与mysql的安装时密码相同(如.root,system,admin,rahul等)

    然后键入

  • 使用rahul_db(数据库名称);

谢谢。**

也许有人面临这个问题。 我在Ubuntu 14上使用Mysql Workbench ,并得到这个错误。

 mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect 

通过运行sudo find / -type sfind你的socket文件,在我的情况下是/run/mysqld/mysqld.sock

所以,我只是在tmp目录中创build了一个到这个文件的链接。

 sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock 

我在Ubuntu 14.10上遇到了这个问题

发现mysql-server不再安装(不知何故它已被删除),但我不能安装它,因为有一些破损的包和依赖性问题/冲突。

最后我不得不重新安装MySQL

 sudo apt-get remove mysql-client sudo apt-get install mysql-server 

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

/etc/my.cnf添加以下行:

 [client] socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld] 

然后重新启动服务: service mysql restart

这对我工作

你可以在/var/run/mysqldfindmysqld.sock ,如果你已经用sudo apt-get install mysql-server

host更改为127.0.0.1为我工作。

编辑/etc/mysql/my.cnf的文件并将下面提到的行添加到client

 [client] port = 3306 host = 127.0.0.1 socket = /var/lib/mysql/mysql.sock 

完成之后。 执行以下命令。

 sudo service mysql start 

我也会检查mysqlconfiguration。 我用自己的服务器遇到了这个问题,但是我的机器的innodb_buffer_pool_size太仓促,错误。

innodb_buffer_pool_size = 4096M

它通常运行良好到2048年,但我想我没有必要的内存来支持4演出。

我想这也可能发生在其他的MySQLconfiguration设置。

这已经提到了几次,但是这对我来说立即奏效:

服务mysql重启

在我的情况下,两个mysqld进程正在运行..通过使用pkill -9 mysqld杀​​死可选进程

如果你的系统上有很多的数据库和表,并且如果你在innodb_file_per_table设置了innodb_file_per_table ,那么你的mysql服务器可能已经用完了打开的对象/文件(或者这些对象的描述符)。设置一个新的max数字与

 open-files-limit = 2048 

并重新启动mysql。 这种方法可能有助于在完全不创build套接字的情况下,但实际上这可能不是真正的问题,存在根本的问题。

我在Ubuntu的虚拟机上运行我的MySQL,所以发生了什么事情,当我重新启动我的主机和虚拟机,IP已经改变。 我configuration了mysql在IP 192.168.0.5上运行,现在由于IP的dynamic分配,我的新IP是192.168.0.8

如果你有同样的问题,只需使用ifconfig命令检查你的ip。

cat /etc/mysql/my.cnf | grep bind-address命令检查你的MySQL绑定 cat /etc/mysql/my.cnf | grep bind-address

如果两个IP都是相同的,那么重新安装你的mysql服务器

如果没有,那么使用nano,vi,vim或者你喜欢的任何东西来改变你在/etc/network/interfaces IP地址。

我更喜欢sudo nano /etc/network/interfaces

并input以下内容

 auto eth0 iface eth0 inet static address 192.168.0.5 netmask 255.255.255.0 

保存interfaces文件,重启你的界面sudo ifdown eth0 && sudo ifup eth0用你的networking接口replace“eth0”

重新启动MySQL sudo service mysql stop然后sudo service mysql start

如果你有和我一样的问题,你很好走!

在archlinux我遇到了这个错误,问题是mysqld -service没有运行。

但是,我无法按照Archlinux文档中的说明,使用systemctl start mysqld启用mysql服务。 我认为这个错误是类似的

找不到mysqld.service

我首先需要重新启动系统。

然后我再次input命令(并inputsystemctl enable mysqld ),现在mysql能够find创build的mysql.sock

当我在digitalocean上调整液滴时,遇到这种types的问题。 我有升级的MySQL版本,为我工作。 这是我应用的教程 – https://serverpilot.io/community/articles/how-to-upgrade-mysql-5.5-to-5.6-on-ubuntu-14.04.html

我尝试了几乎所有列出的解决scheme,没有为我工作,直到我重新启动机器,然后重新启动mysql服务器,当我发出命令“服务mysql重新启动”。

在我的情况下,问题是/etc/mysql/my.cnf中的绑定地址,然后:

nano /etc/mysql/my.cnf

search绑定地址,并删除特定的主机IP(不是127.0.0.1)

我在CentOS VPS上遇到了类似的问题。 如果MySQL启动后无法启动或崩溃,请尝试以下步骤:

1)findmy.cnf文件(我的文件位于/etc/my.cnf)并添加:

innodb_force_recovery = X

用1到6的数字replaceX,从1开始,然后递增,如果MySQL不会启动。 设置为4,5或6可以删除你的数据,所以要小心,并阅读http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html之前。;

2)重新启动MySQL服务。 只有select将运行,这是正常的。

3)将所有的数据库/模式一个一个的dump到mysqldump中,不要压缩转储,因为以后不得不解压缩它们。

4)移动(或删除!)只有在/ var / lib / mysql里面的bd的目录,保存个别文件在根目录下。

5)停止MySQL,然后取消注释1)中添加的行。 启动MySQL。

6)恢复3)中所有的BD。

祝你好运!

mysql.sock文件在MariaDB启动时创build,当MariaDBclosures时被删除。 如果MariaDB没有运行,它将不存在。 也许你没有安装MariaDB。 您可以按照以下说明进行操作: https ://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7 BEST

这个解决scheme可以帮助别人,有时修复很简单。

在你的环境中重新启动mysql服务器和apache

 sudo service mysql restart sudo apache services restart 

这是安装插件或执行任何数据库命令时的常见问题。

在lampp中,我认识到它不能识别mysql命令。 尝试

 sudo /opt/lampp/bin/mysql 

它会打开你可以与数据库进行通信的mysqlterminal。