当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当我尝试连接mysql时,我得到以下错误:
无法通过套接字/var/lib/ MySQL / MySQL连接到本地MySQL服务器。袜子”(2)
有解决这个错误的方法吗?背后的原因可能是什么?
当前回答
很可能是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
这解决了我的问题
其他回答
遇到同样的问题——下面是我的解决方法。
假设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
希望这能有所帮助。
如果你改变了/var/lib/mysql中的文件[像复制或替换它],你必须将文件的所有者设置为mysql,如果mariadb。服务重启失败
chown -R mysql:mysql /var/lib/mysql/* chmod -R 700 /var/lib/mysql/*
try
echo 0 > /selinux/enforce
MySQL服务器没有运行,或者那不是它的套接字文件的位置(检查my.cnf)。
我也有同样的问题,当我研究日志时
Sudo tail -f /var/log/mysqld.log
InnoDB: mmap(137363456 bytes) failed; errno 12
200610 6:27:27 InnoDB: Completed initialization of buffer pool
200610 6:27:27 InnoDB: Fatal error: cannot allocate memory for the buffer pool
200610 6:27:27 [ERROR] Plugin 'InnoDB' init function returned error.
200610 6:27:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
200610 6:27:27 [ERROR] Unknown/unsupported storage engine: InnoDB
200610 6:27:27 [ERROR] Aborting
很明显没有足够的内存来启动InnoDB。我意识到我从来没有设置交换文件…
我按照这个设置交换文件,它工作。