docker中mysql数据库闪退的原因

docker中mysql数据库闪退的原因

问题描述

在dockers中启动mysql容器,使用docker ps 发现没有正在启动的容器,使用 docker ps -a 查看历史容器,发现mysql容器已经退出

可能原因

启动时,没有添加环境变量MYSQL_ROOT_PASSWORD=root

docker run -d -p 3307:3307 --name mysql -v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7

这样就能正常启动mysql容器
在这里插入图片描述
网上也有说时swap空间不足的原因(swap total 为0)
在这里插入图片描述
但是本人原因不在此,故不作讨论

其他

若想要mysql在虚拟机启动就自动启动可以在执行docker run 命令时加–restart=always或者执行命令:

docker update [容器名/容器ID] --restart=always

更新

发现了新问题,就是mysql容器中的/etc/mysql(已被映射到宿主机的/mydata/mysql/conf) 下没有相应的配置文件,搞了很久,没想明白为什么,以为是镜像原因,于是删掉了mysql:5.7的镜像,重新docker pull mysql 拉的最新镜像,然后发现。。。。又秒退,通过在交互模式(-it)下启动容器,发现了问题

Failed to access directory for --secure-file-priv. Please make sure 
that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files

但是宿主机中/mydata/mysql/conf中还是没有配置文件,说明mysql容器中也没有相关配置文件(虽然容器没有启动成功,但是挂载过程应该执行了),欲哭无泪,没配置文件怎么配置secure_file_priv属性,于是在/mydata/mysql/conf目录下创建文件my.cnf并添加如下内容:

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

之后启动容器,就成功了

docker run -d -p 3307:3307 --name mysql -v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
--restart=always \
mysql

然而还是不知道为什么之前mysql容器中/etc/mysql/ 下没有配置文件。
若下载再遇到容器闪退,其实可以以交互模式启动容器,查看报错的信息

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值