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

我在Ubuntu 12.04 LTS (Precise Pangolin)上安装了LAMP ,然后在phpMyAdmin上设置root密码。 我忘记了密码,现在我无法登录。 当我尝试通过终端更改密码时,我得到:

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

我该如何解决这个问题? 我无法打开LAMP,卸载或重新安装。

我曾经有这个问题,并通过安装mysql-server来解决它,所以确保你已经安装了mysql-server ,而不是mysql-client或其他东西。

该错误意味着文件/var/run/mysqld/mysqld.sock不存在,如果你没有安装mysql-server ,那么这个文件就不存在了。 但是,如果mysql-server已经安装并正在运行,那么你需要检查配置文件。

配置文件是:

 /etc/my.cnf /etc/mysql/my.cnf /var/lib/mysql/my.cnf 

/etc/my.cnf ,套接字文件config可能是/tmp/mysql.sock而在/tmp/mysql.sock中,套接字文件config可能是/var/run/mysqld/mysqld.sock 。 所以,删除或者重命名/etc/mysql/my.cnf ,让mysql使用/etc/my.cnf ,那么问题就解决了。

尝试这个:

 mysql -h 127.0.0.1 -P 3306 -u root -p <database> 

另外(看它是否运行):

 telnet 127.0.0.1 3306 

可能这只是my.cnf文件中的错误配置,位于/etc/somewhere (取决于Linux发行版 )。

我看到所有这些答案,但没有人提供重置密码没有被接受的答案的选项。 真正的问题是他忘记了自己的密码,所以他需要重新设置,不要看它是否正在运行(安装与否),因为这些答案的大部分意味着。


重置密码

按照以下步骤操作(如果您忘记了密码,即使您目前不处于这种情况,也可以随时尝试):

  1. 停止mysql

     sudo /etc/init.d/mysql stop 

    或者对于其他发行版本:

     sudo /etc/init.d/mysqld stop 
  2. 以安全模式启动MySQL

     sudo mysqld_safe --skip-grant-tables & 
  3. 使用root登录到MySQL

     mysql -uroot 
  4. 选择要使用的MySQL数据库

     use mysql; 
  5. 重置密码

     update user set password=PASSWORD("mynewpassword") where User='root'; 
  6. 刷新权限

     flush privileges; 
  7. 重新启动服务器

     quit 
  8. 停止并再次启动服务器

    Ubuntu和Debian:

     sudo /etc/init.d/mysql stop ... sudo /etc/init.d/mysql start 

    在CentOS,Fedora和RHEL上:

     sudo /etc/init.d/mysqld stop ... sudo /etc/init.d/mysqld start 
  9. 用新密码登录

     mysql -u root -p 
  10. 输入新的密码,再次享受您的服务器,就像什么都没有发生

这是从重置一个MySQL根密码


更新摘自@ Daniel的评论如下:

在MySQL 5.7中,mysql.user表字段中的密码字段被删除了,现在字段名是'authentication_string',所以步骤5应该是:

  update user set authentication_string=password('mynewpassword') where user='root'; 

我尝试了以下步骤:

  1. super user身份登录或使用sudo
  2. 使用gedit打开/etc/mysql/my.cnf
  3. 找到bind-address ,并将其值更改为数据库服务器主机的IP地址。 对我来说,这是localhost127.0.0.1
  4. 保存并关闭文件。
  5. 回到终端并执行sudo service mysql start

它为我工作。

我有一个类似的问题。 MySQL不会启动:

 sudo service mysql start start: Job failed to start 

如果我禁用了apparmor:

 sudo aa-complain /etc/apparmor.d/* 

问题就消失了。 问题是mysqld试图访问/run/mysqld/mysqld.sock,但是apparmor配置文件只允许/var/run/mysqld/mysqld.sock(/ var / run被symlinked到/ run,所以它们实际上是一样)。 不知道为什么mysqld不使用var路径,因为这是所有配置文件中设置的内容,但是您可以通过将以下内容添加到/etc/apparmor.d/usr.sbin.mysqld

 /run/mysqld/mysqld.pid rw, /run/mysqld/mysqld.sock rw, 

我通过杀死mysql进程来解决这个问题:

 ps -ef | grep mysql kill [the id] 

然后我再次启动服务器:

 sudo /etc/init.d/mysql restart 

start也是如此:

 sudo /etc/init.d/mysql start 

然后我以admin身份登录,我完成了。

我通过执行以下命令解决了这个问题:

 mysql.server start 

如果你在Mac上,并使用brew来安装mysql,只需使用:

 brew services start mysql 

不知何故MySQL服务器进程没有创建套接字,或者客户端在错误的地方寻找套接字。

我的第一个建议是检查MySQL服务器是否正在运行。 第二个建议可能是,MySQL服务器是否在另一台主机上运行? 如果是这样,请将-h <hostname>标志添加到您的MySQL客户端中。

如果MySQL确实在运行,并在本地运行,请检查您的my.cnf文件。 应该有一个像

 socket = /var/run/mysqld/mysqld.sock 

看看是否符合你在帖子中提到的套接字位置。

从经验来看,我认为最可能的情况是您的MySQL服务器根本没有运行,或者没有运行在您从终端运行MySQL客户端的主机上。

你的mysql服务器可能没有运行。 通过在终端中输入mysql.server start来确保它运行。

我必须重新启动生产服务器后才遇到同样的问题。 我在DigitalOcean液滴上运行Debian 8.1(Jessie)。

这是我解决我的问题所做的:

  1. 检查文件/var/run/mysqld/mysqld.sock存在。 如果没有,通过输入touch /var/run/mysqld/mysqld.sock (这就是我所要做的)手动创建它。

  2. 所以MySQL进程可以使用这个文件。 通过输入chown mysql /var/run/mysqld/mysqld.sock更改所述文件的所有权。

  3. 一旦完成“2”,输入service mysql restart/etc/init.d/mysql restart MySQL服务。

经过上述步骤,我的问题就解决了。 我很少有这个问题,可能有更好的办法,所以一定要提供建设性的反馈,如果需要的话:)。

在我的情况下,这是磁盘已满,mysqld无法启动了。

以下是对我有用的东西:

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

这创建了一个链接。

我想每当你得到错误

错误2002(HY000):无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地MySQL服务器

我会建议首先检查你的mysql守护进程是否正在运行…大部分时间默认情况下不会运行。 你可以通过/etc/init.d/mysqld status来检查它。

如果没有运行,请先启动它:

 .../etc/init.d/mysqld start. 

我敢打赌,这将有110%的工作。

如果您使用的是Amazon EC2 ,并且您在实例上遇到此问题,则只需执行以下操作:

 sudo yum install mysql-server sudo service mysqld restart 

Amazon EC2没有安装服务器(仅安装客户端),所以如果需要在您的实例上安装该服务器,那么请尝试

  mysql -u root -p 

检查是否工作。

而不是使用本地主机:

 mysql -u myuser -pmypassword -h localhost mydatabase 

使用127.0.0.1

 mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase 

(还要注意,-p和mypassword之间没有空格)

请享用 :)

确保你有重要数据库的备份,然后尝试卸载MySQL相关的东西:

 apt-get remove --purge mysql\* 

然后再次安装它

 apt-get install mysql-server mysql-client 

这对我工作,数据保存。

如果PHP MySQL显示错误,您可能需要重新安装PHP MySQL

 apt-get install php5-fpm php5-mysql 

如果您的Linux机器上安装了XAMPP ,请尝试将my.cnf文件从/opt/lampp/etc/my.cnf复制到/etc/my.cnf

然后,再次运行mysql -u root …您现在应该拥有正确的套接字并且能够运行MySQL客户端。

我也有这个问题,但我只是做了:

 sudo service mysql restart 

它为我工作。

在我的情况下,默认端口3306正在被其他进程使用,因此它没有启动。 我停止了其他服务,并做了sudo service mysql start ,它工作正常。 顺便说一句,你可以使用类似sudo lsof -Pn -iTCP:3306来查看谁可能正在使用该端口。

检查"bind-adress"参数。

否则尝试命令:

 mysql -h 127.0.0.1 -P 3306 -u root -p 
  • -h为主机127.0.0.1 ,即localhost

  • -P(注意-P为大写)为端口2206 ,也就是MySQL的默认端口

在我的情况下,它通过做一些研发工作:

我可以使用连接到MySQL

 root-debian#mysql -h 127.0.0.1 -u root -p 

但是它不能使用mysql -u root -p

我没有在my.cnf中找到任何bind-address 。 所以我在my.cnf中插入了参数socket=/var/lib/mysql/mysqld.sock ,这导致了登录问题。

重新启动服务后,它很好:

 root@debian:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.6.19 MySQL Community Server (GPL) 

我遇到过同样的问题。 有时候,如果您的MySQL服务被关闭,会发生这种情况

所以你必须开始它:

 sudo service mysql start 

我有同样的问题。 经过多次搜索,我没有找到任何答案。

最后,我检查了/tmp目录,其权限是755.我将权限更改为777,mysqld启动顺利,没有任何问题。

打开终端并键入:

 sudo apt-get purge mysql-client-core-5.6 sudo apt-get autoremove sudo apt-get autoclean sudo apt-get install mysql-client-core-5.5 sudo apt-get install mysql-server 

MySQL数据库核心客户端和MySQL服务器包都将是相同的版本5.5。 MySQL Client 5.5和MySQL Server 5.5是Ubuntu 14.04中这些软件包的当前“最佳”版本,由软件包维护者决定。

如果你宁愿安装MySQL Client 5.6和MySQL Server 5.6,你也可以在Ubuntu软件中心找到mysql-client-core-5.6和mysql-server-5.6软件包。 重要的是客户端和服务器版本号在任何一种情况下都匹配。

这对我有效。

 mysqld stop mysql.server start 

检查你是否有正确的权利:

 sudo chmod 755 /var/lib/mysql/mysql 

我有同样的问题,这对我工作。 做完这些之后,我就可以启动MySQL了。

Ubuntu 14.04(Trusty Tahr)也一样。

如果你已经安装了XAMPP,安装mysql-server不是解决方案,因为你将会访问另一个MySQL!

你必须使用正确的插座来访问。 通常是这样的:

 /opt/lampp/var/mysql/mysql.sock 

相反,将其更改为:

 /var/run/mysqld/mysqld.sock 

现在起作用了…

我已经按照教程在Mac OS X上使用Homebrew安装MariaDB 10.1.16来解决这个问题。

但是不要忘记杀死或卸载MariaDB的旧安装。

如果你的安装是最近的,你应该确认你的安装是否安装了SERVER …作为mysql-server-5.5 ..也许你只安装了“mysql”..这只是客户端而不是服务器。

根据经验,我说你需要检查服务器是否先运行,然后尝试配置MySQL。 最后的解决方案是重新安装MySQL。