错误:“无法通过套接字连接到本地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-servermysql-client再来一次。但我注意到它并没有提示我输入密码。不是应该问管理员密码吗?


慕尼黑的夜晚无繁华
浏览 2282回答 3
3回答

慕无忌1623718

要查找系统上的所有套接字文件,请运行: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 stopmysqladmin -u root -p shutdown有些系统的设置并不是为了有一种优雅的方式来阻止MySQL(或者由于某种原因MySQL没有响应),您可以强制使用以下两种方法来终止MySQL:查找mysql的进程idpgrep 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进程的用户必须能够访问套接字所在的目录。

largeQ

试试这个命令,sudo service mysql start

森林海

此错误是由于MySQL的多个安装造成的。运行命令:ps -A|grep mysql使用以下方法终止进程:sudo pkill mysql然后运行命令:ps -A|grep mysqld还可以通过运行以下操作来终止此进程:sudo pkill mysqld现在您已经完全设置好了,只需运行以下命令:service mysql restart mysql -u root -p再次很好地使用MySQL
打开App,查看更多内容
随时随地看视频慕课网APP