错误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发行版 )。 
我看到所有这些答案,但没有人提供重置密码和没有被接受的答案的选项。 真正的问题是他忘记了自己的密码,所以他需要重新设置,不要看它是否正在运行(安装与否),因为这些答案的大部分意味着。
重置密码
按照以下步骤操作(如果您忘记了密码,即使您目前不处于这种情况,也可以随时尝试):
- 
停止 mysqlsudo /etc/init.d/mysql stop或者对于其他发行版本: sudo /etc/init.d/mysqld stop
- 
以安全模式启动MySQL sudo mysqld_safe --skip-grant-tables &
- 
使用root登录到MySQL mysql -uroot
- 
选择要使用的MySQL数据库 use mysql;
- 
重置密码 update user set password=PASSWORD("mynewpassword") where User='root';
- 
刷新权限 flush privileges;
- 
重新启动服务器 quit
- 
停止并再次启动服务器 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
- 
用新密码登录 mysql -u root -p
- 
输入新的密码,再次享受您的服务器,就像什么都没有发生 
这是从重置一个MySQL根密码 。
更新摘自@ Daniel的评论如下:
在MySQL 5.7中,mysql.user表字段中的密码字段被删除了,现在字段名是'authentication_string',所以步骤5应该是:
  update user set authentication_string=password('mynewpassword') where user='root'; 
我尝试了以下步骤:
-  以super user身份登录或使用sudo
-  使用gedit打开/etc/mysql/my.cnf
-  找到bind-address,并将其值更改为数据库服务器主机的IP地址。 对我来说,这是localhost或127.0.0.1
- 保存并关闭文件。
-  回到终端并执行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)。
这是我解决我的问题所做的:
- 
检查文件 /var/run/mysqld/mysqld.sock存在。 如果没有,通过输入touch /var/run/mysqld/mysqld.sock(这就是我所要做的)手动创建它。
- 
所以MySQL进程可以使用这个文件。 通过输入 chown mysql /var/run/mysqld/mysqld.sock更改所述文件的所有权。
- 
一旦完成“2”,输入 service mysql restart或/etc/init.d/mysql restartMySQL服务。
经过上述步骤,我的问题就解决了。 我很少有这个问题,可能有更好的办法,所以一定要提供建设性的反馈,如果需要的话:)。
在我的情况下,这是磁盘已满,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。