先说明一下,最终,该机器下的 mysql 还是没有修复成功。但是,里面经历了很多我个人觉得颇具直到意义,所以,在此记录一下。
环境说明
- ubuntu 18.04
参考资料
- ubuntu下mysql服务重启失败解决思路
- 如何在Ubuntu 18.04中安装MySQL 8.0
- ubuntu18.04安装mysql8.0详细教程及踩坑解决方法(包含删除Mysql5.7版本方法)
- ubuntu彻底卸载mysql并且重新安装
- ubuntu 下mysql异常修复 完全卸载与重装
- Ubuntu下迁移MySQL数据库文件目录
- 解决 apt-get remove和dpkg删除出现 E: 无法定位软件包 XXXX
错误说明
有一天,链接 mysql 的时候突然出现下面错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)经过检查得知, /var/run/mysqld/ 下面确实没有 sock 文件。
尝试过,自己生成、开启和关闭等。
表现的情况如下
- 自己生成「
touch」- 毫无作用
- 重启
mysql- 可以关闭,但是,重启的时候出现错误
因为无法 start mysql ,所以,使用
systemctl status mysql.service但是,没啥用处。
这个时候就要检查一下 mysql 的日志文件。你可以通过 mysql 的配置文件来查看日志放在哪里,一般在
/etc/mysql/
/etc/mysql/conf.d可能还有其他路径,看一下 /etc/mysql/my.cnf 的配置。
其中,mysql 的日志文件放在
/var/log/mysql/error.log我看了一下没有有用信息,就看了一下系统的日志,在
/var/log/syslog
tail -300f syslog发现,mysql 在不断的重启,也就是,mysql 确实是坏了,现阶段,我唯一想到的办法就是重装 mysql 。
卸载 mysql
在卸载前,首先应该备份 mysql 的数据。并且,查明 mysql 的版本
mysql --version但是,因为 mysql 进不去,导致 mysqldump 用不了,所以,使用网上教授的方法,备份 /var/lib/mysql
新建一个文件夹,进入后
cp -ar /var/lib/mysql ./加上 a 的目的是,把文件的所属关系之类的一并复制过来。
备份好后,开始卸载 mysql。
对了,在卸载之前,我先是局部卸载,比如
sudo apt-get remove mysql-server接着
sudo apt-get install mysql-server发现不行,于是打算全部卸载。
sudo apt-get remove mysql-*但是,有时候会遇到使用这个命令依然不能卸载的情况,这个时候,就要用
dpkg --list|grep mysql来查看,具体叫什么。然后使用
sudo apt-get remove 跟具体的名字
sudo apt-get autoremove 具体名字来单独卸载,直到
dpkg --list|grep mysql没有显示东西。接着卸载用户文件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P会弹出一个对话框,让你是否卸载数据库,这里选择 yes 。
安装 mysql
我上面查到的 mysql 的版本是 8.0 ,但是,如果直接 apt-get 安装的话,安装的版本是 5.7 。
使用命令下载存储库软件包:
wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb使用命令安装上边下载的安装包:
sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb安装过程中提示选择安装版本,默认安装的就是8.0版本,所以直接选择 OK 确认即可;
从所有已配置的存储库(包括最近添加的MySQL存储库)下载最新的包信息。
sudo apt update然后运行以下命令为MySQL社区服务器,客户端和数据库公共文件安装软件包。
sudo apt-get install mysql-server安装过程中会让你输入密码。
输入之后会出现选择加密方式的提示界面,我在网上的教程中看到默认的mysql8.0的加密方式与ubuntu18.04 不兼容,所以选择5.x的加密方式;建议选择下边的那个:

不出意外,应该是安装好了。
迁移数据库
这里可以把数据库进行重新指向,也可以把备份数据 copy 过来。
但是,我 copy 之后,发现,又出现了
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)经过,长时间的解决,发现最终无法解决,不得已,开始重装系统。