先说明一下,最终,该机器下的 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)
经过,长时间的解决,发现最终无法解决,不得已,开始重装系统。