Docker启动mysql8.0版本自动退出,Supplied value : /var/lib/mysql-files

在尝试使用Docker运行MySQL容器时遇到容器自动退出的问题,原因是缺少'/var/lib/mysql-files'的挂载路径。通过查看日志发现错误信息,并解决了该问题。解决方案是在启动命令中添加一个新的挂载点,将宿主机的路径映射到'/var/lib/mysql-files',重新启动容器后,问题得到解决,MySQL容器成功运行。
[root@xiao /]# docker run -d -p 3306:3306 -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 --name mysql mysql
a0cb6c6bf60baa45a79da19fee048b680cf306b4b4ed47b7bf05e693f52b759a
You have new mail in /var/spool/mail/root
[root@xiao /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS                     PORTS     NAMES
a0cb6c6bf60b   mysql     "docker-entrypoint.s…"   4 seconds ago   Exited (1) 2 seconds ago             mysql
[root@xiao /]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

发现容器自动退出

查看日志:docker logs mysql

[root@xiao /]# docker logs mysql
2022-03-20 03:51:20+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
2022-03-20 03:51:20+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2022-03-20 03:51:20+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)
2022-03-20T03:51:21.229669Z 0 [ERROR] [MY-010095] [Server] 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
2022-03-20T03:51:21.229698Z 0 [ERROR] [MY-010119] [Server] Aborting

发现,日志报错,没有一个/var/lib/mysql-files挂载的真实路径

mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)

解决方法:添加一个对应的宿主机路径,在重新启动前,记得删除已经存在的容器

-v /mydata/mysql/mysql-files:/var/lib/mysql-files

这是本人成功截图

[root@xiao /]# docker run -d -p 3306:3306 -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -v /mydata/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=root --name mysql mysql
83147b6cb0ff24d18ff5737a75b02ec33daa91a0556b72774ef84150abc5ad06
[root@xiao /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
83147b6cb0ff   mysql     "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql

以下是一个包含 `image` 为 `mysql:8.0`、`container_name` 为 `mysql` 的 MySQL Docker 配置示例,以及对配置内容的解析: ```yaml version: '3' services: mysql: image: mysql:8.0 container_name: mysql environment: - MYSQL_ROOT_PASSWORD=root_password - MYSQL_DATABASE=mydb - MYSQL_USER=myuser - MYSQL_PASSWORD=mypassword volumes: - mysql-data:/var/lib/mysql ports: - "3306:3306" volumes: mysql-data: ``` #### 配置含义解析: 1. **`version: '3'`**:指定 Docker Compose 文件的版本为 3,不同版本支持的功能有所差异。 2. **`services`**:定义服务的部分,每个服务代表一个容器。 3. **`mysql`**:服务的名称,可自定义,这里使用 `mysql`。 4. **`image: mysql:8.0`**:指定使用的 MySQL 镜像为 `mysql` 官方镜像的 8.0 版本。 5. **`container_name: mysql`**:指定容器的名称为 `mysql`,便于后续管理和操作。 6. **`environment`**:设置容器的环境变量。 - `MYSQL_ROOT_PASSWORD=root_password`:设置 MySQL 的 root 用户密码为 `root_password`。 - `MYSQL_DATABASE=mydb`:创建一个名为 `mydb` 的数据库。 - `MYSQL_USER=myuser` 和 `MYSQL_PASSWORD=mypassword`:创建一个名为 `myuser` 的用户,并设置其密码为 `mypassword`。 7. **`volumes`**:用于数据持久化,将容器内的 `/var/lib/mysql` 目录挂载到名为 `mysql-data` 的卷上,防止数据丢失。 8. **`ports`**:将容器内的 3306 端口映射到宿主机的 3306 端口,以便从宿主机访问 MySQL 服务。 #### 配置正确性: 该配置在语法上是正确的,但需要根据实际需求调整环境变量的值,如密码、数据库名等。同时,确保宿主机的 3306 端口没有被其他服务占用。 #### 如何使用: 1. 将上述配置保存为 `docker-compose.yml` 文件。 2. 在保存文件的目录下,打开终端,执行以下命令启动 MySQL 服务: ```bash docker-compose up -d ``` `-d` 表示在后台运行容器。 3. 若要停止服务,执行: ```bash docker-compose down ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值