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

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

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


当前回答

编辑/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;

其他回答

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

首先你应该开始,

$ sudo systemctl start mariadb

如果失败了,不如试试,

$ sudo systemctl start mysqld

然后启动mysql,

$ mysql -u root -p

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

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

我做了以下更改

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

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

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

注意,当mysql从my.cnf文件中读取套接字文件的位置信息时,mysql_secure_installation程序有时似乎不能正确地这样做。

所以,如果你像我一样,在安装时到处乱放东西,你可能会遇到这样的情况:你可以用mysql连接到数据库,但东西不能被保护(无论如何不使用那个脚本)。

为了解决这个问题,sreddy的建议很有效:从脚本期望套接字的位置到它实际所在的位置创建一个软链接。例子:

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

(我使用/tmp/作为套接字的默认位置)

MySQL服务器没有运行,或者那不是它的套接字文件的位置(检查my.cnf)。

我使用MyXQL访问Elixir中的数据库。我的实际错误是使用/tmp/mysql。当/etc/my.conf使用/var/lib/mysql/mysql.sock时。

我的解决方案是在Elixir设置中设置一个环境变量: 出口MYSQL_UNIX_PORT = / var / lib / mysql / mysql。sock,这样MyXQL就不会使用它的默认位置。

这种解决方案的原则是,您可以将MyXQL重定向到另一个位置,以避免这种类型的问题。