Derzeit verwende ich die folgende einfache YAML-Datei, um einen MySQL-Server zu starten
version: '3.3' services: db: image: mysql/mysql-server restart: always environment: MYSQL_DATABASE: 'db' MYSQL_USER: 'user' MYSQL_PASSWORD: 'strongpasswordnobodycanguessorcrackatall' # Password for root access MYSQL_ROOT_PASSWORD: 'somethingevenmorestrongerthaneverbefore' ports: - '3306:3306' expose: - '3306' volumes: - compose-my-db volumes: - ./:compose-my-db:
Allerdings muss ich mich mit dem Container verbinden und den folgenden Befehl verwenden:
将 *.* 上的所有内容授予 'c'@'%';刷新权限;
Dadurch erhalte ich alle Berechtigungen, die ich benötige, und ermöglicht Remoteverbindungen über den in der Compose-Datei erstellten Benutzer.
Ich weiß, dass ich die Datei my.cnf ändern oder ein Init-Skript hinzufügen kann, das nach der Initialisierung von mysqld ausgeführt wird, aber ich möchte, dass der Benutzer in Docker-Compose erstellt wird.
我认为我们可以通过
MYSQL_INITDB
来实现这一点 - 在MySQL容器中设置一个初始化脚本。首先,您可以像下面这样为MYSQL_INITDB添加一个环境变量
然后,您需要按照以下方式更新卷配置
在与您的docker-compose文件相同的目录中创建一个01.sql文件。
在这里查看官方文档:https://hub.docker.com/_/mysql/ 在Initializing a fresh instance子主题下。