【问题标题】:Docker mysql container not creating user with password when specified with database使用数据库指定时,Docker mysql容器未使用密码创建用户
【发布时间】:2018-01-05 09:23:16
【问题描述】:

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

我运行了以下命令:

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

上述命令将启动容器,但是当我 bash 进入正在运行的容器时,我无法看到带有密码的用户。只有mysql在运行

docker exec -it testdata_db bash

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

【问题讨论】:

  • 请澄清您没有看到用户的意思?你的意思是用户没有被创建?
  • 你想以非root用户身份运行容器,还是想在MYSQL_USER中提到的mysql中创建一个用户?
  • mysql用户不是在/etc/passwd中创建的
  • 我想创建一个容器,用户为 MYSQL_USER,密码为 MYSQL_PASSWORD,数据库为 MYSQL_DATABASE,存在于已安装的卷中......如果我运行上述 docker,则不会创建用户命令...但是mysql-server容器启动成功

标签: mysql docker


【解决方案1】:

我通过使用所需的 sql 命令创建一个 init.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2012-08-23
    • 2016-03-28
    • 2016-01-31
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多