当我尝试连接mysql时,我得到以下错误:

无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)

有解决这个错误的方法吗?背后的原因可能是什么?


当前回答

如果你的mysql之前是工作的,突然停止了,就“重启”服务器。

在我的CentOS vps上遇到了这个问题->

不断得到

无法通过套接字/var/lib/ MySQL / MySQL .sock连接到本地MySQL服务器(2)

尝试了所有的技术,最终重新启动服务器修复了问题->

立即关闭-r

希望这能有所帮助!!

其他回答

请确保你已经正确安装了MySQL服务器,我遇到过这个错误很多次,我认为从套接字调试很复杂,我的意思是重新安装它可能更容易。

如果你使用的是CentOS 7,下面是正确的安装方法:

首先,添加mysql社区源代码 Yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

然后你可以通过yum install mysql-community-server安装它

用systemctl启动它:systemctl Start mysqld

我做了以下更改

在[mysqld]和my.cnf的[client]中都提到了socket的任何路径,并重新启动mysql

[mysqld] 插座= / var / lib / mysql / mysql。袜子

(客户端) 套接字= / var / lib / mysql / mysql.sock

确保在/var中有足够的空间。如果Mysql恶魔不能写入额外的信息到驱动器,Mysql服务器将不会启动,这将导致错误无法连接到本地Mysql服务器通过套接字'/var/lib/ Mysql / Mysql。袜子”(2)

考虑使用

expire_logs_days = 10
max_binlog_size = 100M

这将帮助您降低磁盘使用率。

当我用yum重新安装mariadb时,我遇到了这个问题,它将我的/etc/my.cnf.d/client.cnf重命名为/etc/my.cnf.d/client.cnf.rpmsave,但保留/etc/my.cnf不变。

因为我已经在/etc/my.cnf中配置了mysqld的套接字,在/etc/my.cnf.d/client.cnf中设置了自定义路径。

所以安装后,mysql客户端找不到mysql的socket conf,所以它尝试使用默认的socket路径来连接msyqld,这将导致这个问题。

以下是定位此问题的一些步骤。

检查mysqld是否运行ps -aef | grep mysqld

$ps -aef | grep mysqld | grep -v grep
mysql    19946     1  0 09:54 ?        00:00:03 /usr/sbin/mysqld

如果mysqld正在运行,显示它使用的套接字与netstat -ln | grep mysql

$netstat -ln | grep mysql
unix  2      [ ACC ]     STREAM     LISTENING     560340807 /data/mysql/mysql.sock

检查套接字是否是mysql客户端试图连接。 如果不是,编辑/etc/my.conf.d/client.cnf或my.conf使套接字与mysqld中的套接字相同

[client]
socket=/data/mysql/mysql.sock

你也可以编辑mysqld的套接字,但你需要重新启动或重新加载mysqld。

编辑/etc/my.cnf即可 在my.cnf中添加以下行

[mysqld]

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

[client]

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

重新启动mysql并重新连接

Mysql -u user -p password database -h host;