使用 Docker Compose 安装 MySQL 以及所遇到的问题解决
简介
本文章将详细介绍如何使用 Docker Compose 安装 MySQL 以及所遇到的问题解决。
相关文章参考:
Linux操作系统下Docker和Docker Compose的安装教程(包含x86和arm64平台离线一键安装资源包)
版本如下
名称 | 版本 |
---|---|
MySQL | 8.1.0 |
CentOS | 7.6+ |
Docker | 20.10.22 |
Docker Compose | 1.23.1 |
1. 安装步骤
整体文件结构:
[root@localhost mysql] tree -L 1
.
├── data
├── docker-compose.yml
└── log
1.1 数据持久化
# 创建持久化文件夹
[root@localhost mysql] mkdir -p log
[root@localhost mysql] mkdir -p data
[root@localhost mysql] chmod +777 log
[root@localhost mysql] chmod +777 data
1.2 创建docker compose文件
#创建docker compose文件
[root@localhost mysql] vim docker-compose.yml
具体内容如下:
version: "3.7"
networks:
mysql: #对应“mysql网桥”
external: true
services:
mysql:
image: mysql:8
restart: always
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: "root" # root密码
# MYSQL_USER: test # 新用户账号
# MYSQL_PASSWORD: root # 新用户 密码
ports:
- 3306:3306
volumes:
- ./data:/var/lib/mysql
- ./log:/var/log/mysql
networks:
- mysql #网桥 这里的网桥名称“mysql”
1.3 安装使用
# 执行安装
[root@localhost mysql] docker network create mysql
a4465fd58291621302219908b7407a8a4586621b6817162cc359e1286fec8a6a
[root@localhost mysql] docker-compose up -d
Creating mysql ... done
[root@localhost mysql]
Navicat 主机ip:3306
root账户密码也为root
2. 问题解决
2.1 网桥创建报错
直接执行 docker-compose up -d 报错:
ERROR: Network mysql declared as external, but could not be found.
[root@localhost mysql] docker-compose up -d
ERROR: Network mysql declared as external, but could not be found. Please create the network manually using `docker network create mysql` and try agai
解决办法:
按照报错提示先执行命令 docker network create mysql
再次 docker-compose up -d 即可
2.2 升级MySQL版本报错
MySQL镜像版本升级为最新(mysql:latest)后重新执行 docker-compose up -d 报错:
[ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
023-08-03T02:17:11.613448Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2023-08-03T02:17:11.613472Z 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.
2023-08-03T02:17:11.613582Z 0 [ERROR] [MY-010119] [Server] Aborting
2023-08-03T02:17:11.613960Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.1.0) MySQL Community Server - GPL
解决办法:
1.删除MySQL容器
[root@localhost mysql] docker stop mysql
[root@localhost mysql] docker rm mysql
2.删除映射的持久化目录 data (./data:/var/lib/mysql)
[root@localhost mysql] rm -rf data
3.重新创建持久化文件夹和容器
[root@localhost mysql] mkdir -p data
[root@localhost mysql] chmod +777 data
[root@localhost mysql] docker-compose up -d
Creating mysql ... done
[root@localhost mysql] docker logs -f mysql # 查看日志是否安装成功
相关文章参考:
Linux操作系统下Docker和Docker Compose的安装教程(包含x86和arm64平台离线一键安装资源包)