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

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

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


当前回答

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

Ubuntu16.04版本,如果mysql服务器正在运行,在/etc/mysql中配置如下:

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

那么Navicat15 localhost的默认设置是: " / var / lib / mysql / mysql.sock”

你可以像这样提前编辑:

其他回答

以下是对我有效的方法:

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

如果你改变了/var/lib/mysql中的文件[像复制或替换它],你必须将文件的所有者设置为mysql,如果mariadb。服务重启失败

chown -R mysql:mysql /var/lib/mysql/* chmod -R 700 /var/lib/mysql/*

当我用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。

遇到同样的问题——下面是我的解决方法。

假设mysqld正在运行,那么问题可能只是mysql客户端不知道在哪里寻找套接字文件。

解决这个问题最直接的方法是在用户的配置文件.my.cnf文件中添加以下一行(在linux上通常在/home/myusername下):

socket=<path to the mysql socket file>

如果你没有.my.cnf文件,那么创建一个包含以下内容的文件:

[mysql]
socket=<path to the mysql socket file>

在我的例子中,由于我将mysql默认数据文件夹(/var/lib/mysql)移动到不同的位置(/data/mysql),我添加到.my.cnf如下:

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

希望这能有所帮助。

MariaDB是MySQL的一个社区开发的分支,在许多发行版中已经成为MySQL的默认实现。

首先你应该开始,

$ sudo systemctl start mariadb

如果失败了,不如试试,

$ sudo systemctl start mysqld

然后启动mysql,

$ mysql -u root -p

到今天为止,在Fedora中,这个包被命名为mariadb 在Ubuntu中叫做mariadb-server。

因此,如果您的系统中还没有安装它,您可能必须安装它。