docker下mysql容器restarting的一种解决方式
一 版本
docker26.0.0
mysql8.0.30
二 问题

docker的mysql容器一直处于restarting状态,rm、重装后问题依然存在。
三 解决过程
操作1:
docker logs -f mysql8
日志:
2024-05-14T07:09:45.270411Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2024-05-14T07:09:45.270419Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2024-05-14T07:09:45.270492Z 0 [ERROR] [MY-010119] [Server] Aborting
2024-05-14T07:09:45.270608Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.30) MySQL Community Server - GPL.
发现:
数据目录 /var/lib/mysql/ 中已经存在文件,但尝试使用了 --initialize 选项来初始化数据库,造成了初始化失败的错误。
操作2:
# 停止并移除当前的MySQL容器
docker stop <容器ID>
docker rm <容器ID>
# 删除MySQL数据目录中的文件
sudo rm -rf /var/lib/mysql/*
# 重新docker run
发现:
没有解决。。。Restarting
操作3:
docker logs -f mysql8
日志:
2024-05-14T07:37:33.185240Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8mb3_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
2024-05-14T07:37:33.185680Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2024-05-14T07:37:33.185687Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
发现:
上次删除的是/var/lib/mysql/*,但是我创建容器时进行的持久化操作-v /tom/mysql8/data:/var/lib/mysql
或许应该删除 /tom/mysql8/data/*
操作4:
docker stop mysql8
docker rm mysql8
sudo rm -rf /tom/mysql8/data/*
docker run -d -p 3306:3306 --privileged=true --restart=always -e MYSQL_ROOT_PASSWORD=123456 --name mysql8 -v /tom/mysql8/log:/var/log/mysql -v /tom/mysql8/data:/var/lib/mysql -v /tom/mysql8/conf:/etc/mysql/conf.d mysql:8.0.30
检验:
docker ps发现mysql正常运行了

浙公网安备 33010602011771号