Bootstrap

linux上mysql服务启动失败:[ERROR] Failed to create a socket for IPv4 ‘0.0.0.0‘: errno: 13

分析

ubuntu_20服务器上,基于docker创建了的mysql容器,一直能稳定运行。当时当我在linux使用apt直接安装apache2和mysql后,再次启动mysql容器就会失败。
遇到问题,我们先看下容器的报错日志,执行查看日志命令:docker logs -f -t --tail 10 mysql01
日志内容如下:
在这里插入图片描述
可以看到,容器在创建时就报错。百度了一圈,原因都指向:IP被暂用,端口被占用。
那么猜测应该就是之前linux上安装的apache2或mysql导致网络端口被占用导致的,那么只需要停止这两个服务就行。

一、linux下停止apache2+mysql

1、停止服务

sudo systemctl stop apache2
sudo systemctl stop mysql

#或者如果您使用的是旧版本的 Ubuntu,可能会使用 service 命令:
#sudo service mysql stop
#sudo service apache2 stop

到这里,我们再次启动docker中的mysql容器,应该就可以启动:

docker start mysql01

执行后,事与愿违,查看容器日志,还是报之前一样的错误。

2、删除包

如果上面停止服务后还是不能正常启动mysql容器。那么就直接清除所有的apt包

# 1、首先查看mysql相关的包有哪些?
apt list --installed | grep mysql
# 2、删除所有的mysql包
apt remove --purge mysql-server mysql-client mysql-common

# 3、首先查看apache2相关的包有哪些?
apt list --installed | grep apache2
# 4、删除所有的apache2包
apt remove --purge apache2-bin apache2-data apache2-utils

删除完成后,可以再次查看包,看看是否还有遗留,正常应该是没有剩余包了:

apt list --installed|grep mysql
apt list --installed|grep apache2

在这里插入图片描述

3、启动mysql容器

执行完1、2两个步骤后,再次启动mysql容器时,已经正常启动。

docker start mysql01 #【mysql01】是容器名,这里也可以写容器id
docker logs -f -t --tail 10 mysql01	# 查看容器执行日志

这时查看容器日志,可以看到已经启动正常:
在这里插入图片描述

二、window下停止apache2+mysql

打开服务,然后找到之前占用端口的mysql服务,并停止。
在这里插入图片描述
然后再启动我们需要启动的mysql服务。
在这里插入图片描述

;