docker挂在本地盘mysql无法启动

更新时间:01-26 教程 由 忆离人 分享

如果你在使用Docker挂载本地盘上的MySQL时遇到了启动问题,可能是由于文件权限问题造成的。下面我们就来介绍一下如何解决这个问题。

首先,Docker挂载本地盘的时候,需要在运行Docker容器的命令中添加-v参数,指定要挂载的目录:

docker run -d \-v /path/to/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=xxx \--name mysql \mysql:latest

这样就可以将本地的/path/to/mysql目录挂载到MySQL容器内的/var/lib/mysql目录了。

然而,有时候在启动MySQL容器的时候会遇到如下错误:

[ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.[ERROR] [MY-013236] [Server] Newly created data directory /var/lib/mysql/ is unusable. You can safely remove it.[ERROR] [MY-010119] [Server] Aborting

这个错误提示说,初始化时指定了--initialize参数,但是数据目录/var/lib/mysql中已经存在了文件,所以初始化失败。但是,这个目录我们已经挂载了,为什么会存在文件呢?

原因在于,Docker挂载本地目录时,往往会遇到文件权限问题。在容器内,MySQL进程的用户为mysql,而在本地,我们通常以root用户运行Docker命令。因此,在本地创建的目录和文件,其所有者和权限都是root用户。

为了解决这个问题,我们可以在运行Docker命令时,指定该目录或文件的所有者为mysql。具体做法如下:

docker run -d \-v /path/to/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=xxx \--name mysql \mysql:latest \chown -R mysql:mysql /var/lib/mysql

这样,在启动MySQL容器之前,我们先通过chown命令将/data/mysql目录的所有者和用户组都改为mysql。这样,当MySQL进程启动时,就能够正常访问该目录。

综上所述,当我们使用Docker挂载本地盘上的MySQL时,需要注意文件权限问题。通过将挂载目录的所有者和用户组改为mysql,就可以避免启动时的错误。

声明:关于《docker挂在本地盘mysql无法启动》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2262132.html