首页 文章

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

提问于
浏览
323

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

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

我怎样才能解决这个问题?我无法打开LAMP,卸载它或重新安装它 .

30 回答

  • 7

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

    该错误意味着文件 /var/run/mysqld/mysqld.sock 没有't exists, if you didn' t安装 mysql-server ,那么该文件将不存在 . 但是如果 mysql-server 已经安装并且正在运行,那么您需要检查配置文件 .

    配置文件是:

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

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

  • 8

    试试这个:

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

    另外(看看它是否正在运行):

    telnet 127.0.0.1 3306
    

    可能只是 my.cnf 文件中的错误配置,在 /etc/somewhere 中(取决于Linux distribution) .

  • 19

    我想每当你收到错误

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

    我建议先检查你的 mysql 守护程序是否正在运行......大多数情况下它默认不运行 . 您可以通过 /etc/init.d/mysqld status 进行检查 .

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

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

    我打赌它会110%起作用 .

  • 18

    而不是使用localhost:

    mysql -u myuser -pmypassword -h localhost mydatabase
    

    使用127.0.0.1

    mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase
    

    (另请注意,-p和mypassword之间没有空格)

    请享用 :)

  • 4

    我看到了所有这些答案,但 none 提供了 reset the passwordno accepted answer 的选项 . 实际的问题是他的密码,所以他需要重置,而不是看它是否正在运行(安装与否),因为大多数这些答案都意味着 .


    重置密码

    请按照以下步骤操作(如果您真的忘记了密码,可以提供帮助,即使您目前不在这种情况下也可以随时尝试):

    • 停止 mysql
    sudo /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
    
    • 输入新密码,再次享受您的服务器,就像什么都没发生一样

    这取自Reset a MySQL root password .


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

    在MySQL 5.7中,mysql.user表字段中的密码字段已被删除,现在字段名称为'authentication_string',因此步骤5应为:

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

    我尝试了以下步骤:

    • super user 身份登录或使用 sudo

    • 使用gedit打开 /etc/mysql/my.cnf

    • 查找 bind-address ,并将其值更改为数据库服务器主机的IP地址 . 对我来说,这是 localhost127.0.0.1

    • 保存并关闭文件 .

    • 回到终端并执行 sudo service mysql start

    它对我有用 .

  • 6

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

    mysql.server start
    

    如果您使用的是mac并使用brew来安装mysql,只需使用:

    brew services start mysql
    
  • 203

    我遇到了类似的问题 . 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符号链接到/ run,所以这些实际上是相同) . 不确定为什么mysqld没有使用var路径,因为这是在所有配置文件中设置的,但你可以通过将以下内容添加到/etc/apparmor.d/usr.sbin.mysqld来解决问题

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

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

    ps -ef | grep mysql
    kill [the id]
    

    然后我再次启动服务器:

    sudo /etc/init.d/mysql restart
    

    start 也有效:

    sudo /etc/init.d/mysql start
    

    然后我以 admin 登录,我完成了 .

  • 31

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

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

    如果MySQL确实正在运行并在本地运行,请检查 my.cnf 文件 . 应该有像这样的一条线

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

    看看它是否与您在帖子中提到的套接字位置匹配 .

    根据经验,我想说最可能的情况是你的MySQL服务器要么根本没有运行,要么就是不在与从终端运行MySQL客户端的主机相同的主机上运行 .

  • 4

    在我不得不重新启动 生产环境 服务器后,我刚刚遇到了同样的问题 . 我在DigitalOcean Droplet上运行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 restart 重启MySQL服务 .

    完成上述步骤后,我的问题就解决了 . 我很少遇到这个问题,而且可能有更好的方法,所以如果需要,请务必提供建设性的反馈:) .

  • 153

    在我的情况下,磁盘已满,mysqld无法启动 .

    尝试重启mysql服务 .

    服务mysql重启

    要么

    服务mysql停止服务mysql启动

    如果它不识别“停止”命令,那么肯定是磁盘空间 . 您应该在分区mysql中分配一些空间或使磁盘变大 .

    检查磁盘空间

    df -h

  • 88

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

  • 60

    这对我有用:

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

    这会创建一个链接 .

  • 25

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

    sudo yum install mysql-server
    sudo service mysqld restart
    

    Amazon EC2没有安装服务器(仅安装了客户端),因此如果需要在您的实例上安装它,之后尝试

    mysql -u root -p
    

    检查是否有效 .

  • 10

    确保您拥有重要数据库的备份,然后是 try uninstall MySQL 相关内容:

    apt-get remove --purge mysql\*
    

    然后 install it again

    apt-get install mysql-server mysql-client
    

    这对我有用,数据保存 .

    如果PHP MySQL显示错误,您可能需要 reinstall PHP MySQL

    apt-get install php5-fpm php5-mysql
    
  • 9

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

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

  • 8

    我也遇到了这个问题,但我刚刚做了:

    sudo service mysql restart
    

    它对我有用 .

  • 7

    检查my.cnf中的 "bind-adress" 参数 .

    否则尝试使用命令:

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

    端口 3306

    • -P(注意-P为大写),即MySQL的默认端口
  • 7

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

  • 6

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

    我可以使用连接到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)
    
  • 5

    我遇到过同样的问题 . 如果您的MySQL服务被拒绝,有时会发生这种情况 .

    所以你必须开始它:

    sudo service mysql start
    
  • 4

    在Debian服务器Jessie上,我的工作解决方案就是这样做

    service mysql restart
    service mysql reload
    

    以root用户身份

  • 4

    I FOUND THE SOLUTION

    Before firing 命令: mysql_secure_installation

    • 第1步: sudo systemctl stop mariadb

    • 第2步: sudo systemctl start mariadb

    • 第3步: mysql_secure_installation

    然后它将询问root密码,你可以简单地 press Enter 并设置你的新root密码 .

  • 4

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

  • 26

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

  • 5

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

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

  • 5

    打开终端并输入:

    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软件包 . 重要的是客户端和服务器版本号在任何一种情况下都匹配 .

    这对我有用 .

  • 4
    mysqld stop
    mysql.server start
    
  • 18

    它现在有效......

    我已按照教程Installing MariaDB 10.1.16 on Mac OS X with Homebrew来解决此问题 .

    但是别忘了杀死或卸载MariaDB的旧安装 .

相关问题