首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Compose中的Mysql未采用环境变量

问Docker Compose中的Mysql未采用环境变量
EN

Stack Overflow用户
提问于 2019-11-05 20:02:04
回答 3查看 95关注 0票数 0

这是我的docker-compose.yml文件,其中指定了环境变量(root用户名、密码等)。然而,当我运行"docker-compose up“时,它显示MySQL正在使用空密码进行初始化!

为什么?有解决办法吗?

这是docker-compose.yml

代码语言:javascript
复制
version: '3.3'

services:
  db:
    image: mysql:5.7
          #build: sqldocker
    ports:
           -  "3306:3306"
    environment:
           - MYSQL_ROOT_PASSWORD=123456
           - MYSQL_DATABASE=testdb
           - MYSQL_USER=root
           - MYSQL_PASSWORD=123456
             # volumes:
            # - my-datavolume:/var/lib/mysql
    healthcheck:
           test: ["CMD", "mysqladmin", "ping"]
           timeout: 20s
           retries: 10
    restart: always
  backendserver:
    build: ./docker-demo-backend/
    ports:
           - "8080:8080"
    links:
           - "db"
    depends_on:
           - "db"
             # restart: always
  frontend:
    build: ./docker-demo-frontend/frontcrud
    links:
           - "backendserver"
    depends_on:
           - "backendserver"
    ports:
           - "80:80"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-05 23:06:46

当您使用此镜像mysql/5.7时,启动过程分为两个步骤。

第一步是初始化数据库,您会看到下面的消息

代码语言:javascript
复制
2019-11-05T15:01:23.167671Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

但就在数据库停止并重新启动之后。你就不会再有警告了。

票数 1
EN

Stack Overflow用户

发布于 2019-11-05 20:08:19

请查看建议的解决方法:How to use environment variables in docker compose

方法2建议了一种定义包含这类元素(密码)值的.ENV文件的方法。它适用于PostgreSQL,但看起来可能会有所帮助。致以亲切的问候。

票数 0
EN

Stack Overflow用户

发布于 2019-11-05 20:11:05

删除MYSQL_PASSWORD和MYSQL_USER

这些变量是可选的,用于创建新用户和设置该用户的密码。该用户将被授予对MYSQL_DATABASE变量指定的数据库的超级用户权限(请参见上文)。要创建用户,这两个变量都是必需的。

请注意,不需要使用此机制来创建超级用户,默认情况下将使用MYSQL_ROOT_PASSWORD变量指定的密码创建该用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58710970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档