当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当前回答
我没有从上面所有的答案中找到任何解决方案,我确实有mariadb安装,从Debian 11的源代码安装(不是从Debian apt包)。所以每当我在终端中触发mysql命令时,我都会得到这个错误:
ERROR 2002 (HY000): Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)
和mysql错误日志只显示相同的错误套接字上面,这是我很难知道背后的原因
我所做的是删除我的发行版中有mariadb依赖文件的mailutils包。
因此,我只需要触发这两个命令
apt -y remove mailutils
apt -y autoremove
当我在终端运行mysql命令时,我再也没有socket错误了
其他回答
当我用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。
如果您的my.cnf文件(通常在etc文件夹中)配置正确
socket=/var/lib/mysql/mysql.sock
可以使用以下命令检查mysql是否正在运行:
mysqladmin -u root -p status
尝试更改mysql文件夹的权限。如果你在当地工作,你可以尝试:
sudo chmod -R 777 /var/lib/mysql/
这为我解决了问题
我不得不从my.cnf禁用explicit_defaults_for_timestamp。
首先输入“service mysqld start”并登录
MariaDB是MySQL的一个社区开发的分支,在许多发行版中已经成为MySQL的默认实现。
首先你应该开始,
$ sudo systemctl start mariadb
如果失败了,不如试试,
$ sudo systemctl start mysqld
然后启动mysql,
$ mysql -u root -p
到今天为止,在Fedora中,这个包被命名为mariadb 在Ubuntu中叫做mariadb-server。
因此,如果您的系统中还没有安装它,您可能必须安装它。