mysql - 当使用数据库指定时,Docker mysql 容器不会创建带有密码的用户

标签 mysql docker

我有一个用例,我需要在容器上运行 mysql 并将其链接到另一个容器。我的主机位置中也有数据库文件数据,该数据作为卷安装到数据库容器上...条件是不以 root 身份运行容器,而是以具有所有权限的其他用户身份运行容器。 数据库位于已安装的卷中。

我运行了以下命令:

docker run -d -v ~/testdata:/var/lib/mysql -e MYSQL_DATABASE=Testdata_DB -e MYSQL_USER=testdata -e MYSQL_PASSWORD=mypasswordhere -p 3306:3306 --name=testdata_db mysql

上面的命令将启动容器,但当我猛击正在运行的容器时,我无法看到具有密码的用户。只有mysql正在运行

docker exec -it testdata_db bash

请让我知道我哪里出错了。我按照 docker 官方存储库链接下的文档进行操作。

最佳答案

我通过创建一个 init.sql 来解决这个问题,其中包含所需的 sql 命令来创建用户、表,并将其从我的主机加载到 docker-entrypoint-initdb.d/下的容器,并根据需要设置环境变量。这使得 mysql 实例作为新实例加载并加载所有必需的表和数据。 最终的命令是:

docker run --name testdata_db -p 3306:3306 -e "MYSQL_ROOT_PASSWORD= " -e "MYSQL_USER=test" -e "MYSQL_PASSWORD=mypass" -e "MYSQL_DATABASE=mysql" -v ~/mysql/db/:/var/lib/mysql/ -v ~/mysql/init/:/docker-entrypoint-initdb.d/ -d mysql

关于mysql - 当使用数据库指定时,Docker mysql 容器不会创建带有密码的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48110574/

相关文章:

mysql 一对多与纬度/经度

php - 如何在SQL中搜索子节点

mysql - activerecord 是否截断时间戳精度?

Docker 无法登录到 Nexus docker 注册表(托管)

linux - Docker:已安装卷的权限

mysql - 如何使用链接到第三个表的条件连接两个表

mysql - 如果 slave 在 Symfony2 中不工作,自动连接到 MySQL master

postgresql - 创建 docker 镜像时,在 ubuntu 上找不到/var/lib/postgresql/data/目录

java - docker 中 Redis 设置集群模式的问题(Windows 7)

ruby-on-rails - 在没有 Docker Compose 的情况下连接 Rails 和 Postgres 容器