重启了一次数据库之后,再次登录数据库提示。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
查看了mysql进程是存在的,mysql.sock也是有的。

myf里写的是/tmp/mysql.sock


然后又修改myf,将客户端和服务端的sock分开写,失败了,启动了都找不到。

又都修改成当前目录下,启动了之后出现/tmp/mysql.sock

又改回/tmp/mysql.sock ,结果启动后出现在当前目录下了。

但是在mysql(源码安装的)的目录下看到了这个sock文件,配置文件写的是/tmp,出现在这里很奇怪。

检查了mysql目录权限,都是mysql用户的,然后继续排查。

最终解决:将data目录下的ibdata1,ib_logfile0-2移走,没删除,移动到上层目录,因为当前目录是data目录,创建文件夹就是创建数据库,而且ibdaa1里面有数据,千万不能删除,会出现各种问题,比如表引擎不一致,5.5的对innoDB引擎未知之类的。

移走之后启动sock文件就出现在配置文件所在的目录,登录数据库也就成功了,但是出现了新的问题,打开表提示,把ibdata1移回去,那就起不来,起来mysql.sock文件就会消失,无法登录数据库。

 

目前我是移走了ibdata,然后恢复昨天的备份。。。

更多推荐

Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ 一次解决