linux下docker启动mysql8不成功解决方法

linux下docker启动mysql8不成功解决方法

在输入docker运行容器命令后,通常应该启动了mysql
在这里插入图片描述
但是这里输入 docker ps, 并没有容器在运行,输入docker ps -a ,可以看到在status这一栏,端口并未映射
在这里插入图片描述
输入docker logs mysql 显示
在这里插入图片描述


原因

出现这个问题的原因主要与MySQL 8在容器化环境中的一些默认安全设置有关。具体来说,MySQL 8要求一个专用的目录来处理安全文件操作,并且这个目录必须存在并且可访问。以下是导致问题的一些详细原因:

默认的secure-file-priv目录:

MySQL 8引入了secure-file-priv参数,用于指定一个目录,该目录只能用于导入和导出操作,以增强安全性。如果指定的目录不存在或者MySQL没有权限访问该目录,MySQL服务器就会拒绝启动。

容器化环境中的文件系统:

在Docker容器中,文件系统是临时的,并且在容器每次启动时重新创建。如果没有显式地创建或挂载所需的目录,MySQL就无法找到它们。

挂载点问题:

在运行容器时,你使用了多个挂载点 (/var/log/mysql, /var/lib/mysql, /etc/mysql),但没有挂载 /var/lib/mysql-files,导致MySQL尝试访问一个不存在的目录。

为了解决这个问题,需要确保在启动容器时所有必需的目录都已经创建,并且挂载到适当的位置。


解决方法

docker run -p 3307:3306 --name mysql8 \
-v /usr/local/mydata/mysql/log:/var/log/mysql \
-v /usr/local/mydata/mysql/data:/var/lib/mysql \
-v /usr/local/mydata/mysql/conf:/etc/mysql \
-v /usr/local/mydata/mysql/files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=jackhong \
-d mysql:8.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值