为了账号安全,请及时绑定邮箱和手机立即绑定

错误:“无法通过套接字连接到本地MySQL服务器”/var/run/mysqld

错误:“无法通过套接字连接到本地MySQL服务器”/var/run/mysqld

我的问题首先是因为我无法在MySQL安装上以root身份登录。我试着在没有打开密码的情况下运行MySQL.。但是每当我运行命令# mysqld_safe --skip-grant-tables &我永远也回不回提示符了。我试着跟着这些指示用于恢复密码.屏幕就像这样: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我也没有得到一个提示来开始输入SQL命令来重置密码。当我按下它克特 + C,我收到以下信息:error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!如果我重试该命令并保留足够长的时间,就会得到以下一系列消息: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用户身份登录,请执行以下操作:# 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 / -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-server和mysql-client再来一次。但我注意到它并没有提示我输入密码。不是应该问管理员密码吗?
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

要查找系统上的所有套接字文件,请运行:

sudo find / -type s

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

一旦找到打开套接字的位置,使用套接字文件的路径将行添加或编辑到/etc/my.cnf文件中:

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

有时,启动命令行可执行文件的系统启动脚本指定一个标志。--socket=path..此标志可能覆盖my.cnf位置,这将导致找不到my.cnf文件所指示的套接字。然后,当您尝试运行MySQL命令行客户机时,它将读取my.cnf来查找套接字,但是它不会找到它,因为它偏离了服务器创建套接字的位置。因此,除非您关心套接字驻留在何处,否则只需将my.cnf更改为匹配即可。

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

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

  • service mysqld stop

  • /etc/init.d/mysqld stop

  • mysqladmin -u root -p shutdown

  • 有些系统的设置并不是为了有一种优雅的方式来阻止MySQL(或者由于某种原因MySQL没有响应),您可以强制使用以下两种方法来终止MySQL:
    • 查找mysql的进程id

      pgrep mysql

      ps aux | grep mysql | grep -v grep

    • 假设进程id是

      4969

      终止于

      kill -9 4969

    • 一步:

      pkill -9 mysqld

    • 两个步骤(最不可取):

执行此操作后,您可能需要在/var/run/mysqld/并删除它

确保您的套接字上的权限能够使用户mysqld运行的任何用户都可以对其进行读/写。一个简单的测试是打开它进行完整的读/写,看看它是否仍然有效:

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

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

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


查看完整回答
反对 回复 2019-07-13
?
largeQ

TA贡献2039条经验 获得超7个赞

试试这个命令,

sudo service mysql start


查看完整回答
反对 回复 2019-07-13
?
森林海

TA贡献2011条经验 获得超2个赞

此错误是由于MySQL的多个安装造成的。运行命令:

ps -A|grep mysql

使用以下方法终止进程:

sudo pkill mysql

然后运行命令:

ps -A|grep mysqld

还可以通过运行以下操作来终止此进程:

sudo pkill mysqld

现在您已经完全设置好了,只需运行以下命令:

service mysql restart
mysql -u root -p

再次很好地使用MySQL


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 2281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信