错误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。