首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在docker-compose中正确使用mysql命令?

在docker-compose中正确使用mysql命令?
EN

Stack Overflow用户
提问于 2021-07-16 21:14:37
回答 1查看 46关注 0票数 1

我正在努力学习docker-compose。我在通过docker compose运行mysql命令时遇到问题。

这是我的docker-compose文件:

代码语言:javascript
运行
复制
version: '3'

services:
  mysql:
    image: mysql
    container_name: mysql
    restart: always
    env_file: .env
    environment:
      - MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASS
      - MYSQL_USER=$MYSQL_USER
      - MYSQL_PASSWORD=$MYSQL_PASS
      - MYSQL_DB=$MYSQL_DB
    volumes:
      - db-data:/var/lib/mysql
    command: >
      mysql -e "CREATE DATABASE \${MYSQL_DB}"
      && mysql -e "GRANT ALL PRIVILEGES ON \${MYSQL_DB}.* TO '\${MYSQL_USER}'@'%'"
      && mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
    ports:
      - $MYSQL_PORT:3306

volumes:
  db-data:

但是当我运行docker-compose up --force-recreate --build时,我得到了mysql使用指南输出:

代码语言:javascript
运行
复制
Attaching to mysql
mysql    | mysql  Ver 8.0.25 for Linux on x86_64 (MySQL Community Server - GPL)
mysql    | Copyright (c) 2000, 2021, Oracle and/or its affiliates.
mysql    |
mysql    | Oracle is a registered trademark of Oracle Corporation and/or its
mysql    | affiliates. Other names may be trademarks of their respective
mysql    | owners.
mysql    |
mysql    | Usage: mysql [OPTIONS] [database]
mysql    |   -?, --help          Display this help and exit.
mysql    |   -I, --help          Synonym for -?
mysql    |   --auto-rehash       Enable automatic rehashing. One doesn't need to use
mysql    |                       'rehash' to get table and field completion, but startup
...etc...

我是否正确使用command:来发送mysql命令?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-16 21:41:14

我想对MySQL提出一种不同的方法:

您可以挂载另一个将在开头运行的SQL脚本文件:

代码语言:javascript
运行
复制
version: '3'

services:
  mysql:
    image: mysql
    container_name: mysql
    restart: always
    env_file: .env
    environment:
      - MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASS
      - MYSQL_USER=$MYSQL_USER
      - MYSQL_PASSWORD=$MYSQL_PASS
      - MYSQL_DB=$MYSQL_DB
    volumes:
      - db-data:/var/lib/mysql
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    ports:
      - $MYSQL_PORT:3306

volumes:
  db-data:

现在在docker-compose.yml目录中创建init.sql

代码语言:javascript
运行
复制
CREATE DATABASE ${MYSQL_DB}
GRANT ALL PRIVILEGES ON ...

您可以在Initializing a fresh instance中看到它。

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

https://stackoverflow.com/questions/68409658

复制
相关文章

相似问题

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