当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当前回答
如果你改变了/var/lib/mysql中的文件[像复制或替换它],你必须将文件的所有者设置为mysql,如果mariadb。服务重启失败
chown -R mysql:mysql /var/lib/mysql/* chmod -R 700 /var/lib/mysql/*
其他回答
注意,当mysql从my.cnf文件中读取套接字文件的位置信息时,mysql_secure_installation程序有时似乎不能正确地这样做。
所以,如果你像我一样,在安装时到处乱放东西,你可能会遇到这样的情况:你可以用mysql连接到数据库,但东西不能被保护(无论如何不使用那个脚本)。
为了解决这个问题,sreddy的建议很有效:从脚本期望套接字的位置到它实际所在的位置创建一个软链接。例子:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(我使用/tmp/作为套接字的默认位置)
请检查是否有其他mysql服务正在运行。
我做了以下更改
在[mysqld]和my.cnf的[client]中都提到了socket的任何路径,并重新启动mysql
[mysqld] 插座= / var / lib / mysql / mysql。袜子
(客户端) 套接字= / var / lib / mysql / mysql.sock
在我的情况下,我导入了一个新的数据库,在那之后我无法再次连接。最后我意识到这是一个空间问题。
你可以删除最后一个数据库,然后扩展硬盘或者像我做的那样,恢复虚拟机的快照。
以防有人觉得这有用
很可能是mysql。/var/lib/mysql/中不存在Sock。
如果你在另一个位置找到了相同的文件,那么符号链接它:
例如:我把它放在/data/mysql_datadir/mysql.sock中
切换用户到mysql,执行如下所示:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
这解决了我的问题