mysql - docker-compose / mysql:如何正确指定卷以使用现有数据库
问题描述
我想将现有的 mysql 数据库容器化,将容器内的数据目录链接到本地文件系统。
这个 docker run 命令工作正常,即数据库是可访问的并且数据是持久的。
docker run -v ./mydata:/var/lib/mysql mysql:5.7
但是,我无法使其与 docker-compose 一起使用。
我收到以下错误
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
...
Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
我的 docker-compose 文件如下所示:
version: "3.7"
services:
database :
restart: always
image: mysql:5.7
command: --port=4406
volumes:
- ./mydata:/var/lib/mysql
我的撰写文件有什么问题?
更新: mydata 的内容是
- 自动.cnf
- ib_buffer
- 水池
- ib_logfile0
- ib_logfile1
- ibdata1
- mysql
我也试过./mydata/mysql:/var/lib/mysql
卷。这让我可以连接到数据库(例如通过 mysql 工作台),但是当我尝试查看用户时,我得到另一个错误(未找到 DESCRIBE mysql.db 文件)。
解决方案
推荐阅读
- java - UPDATE AND REPLACE 部分或带参数的字符串/记录
- go - 自动将用户添加到 Cognito 组?
- reactjs - 在反应应用程序中分离两个不同的用户界面
- javascript - 无法在 React Native 中对齐文本
- image - 电子纸显示器在arduino上显示乱码而不是图片
- git - 将代码从 dev 合并并推送到 master 的步骤
- batch-file - 从导出的注册表信息排列结果格式时出现问题
- java - 如何在 log4j/tomcat 环境中禁用 gc 日志?
- javascript - HERE 地图使用鼠标单击绘制多边形
- apache-spark - spark-streaming+kafka:使用了一些记录但未计算的分区