Actuellement, j'utilise le simple fichier YAML suivant pour démarrer un serveur MySQL
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:
Cependant, je dois me connecter au conteneur et utiliser la commande suivante :
将 *.* 上的所有内容授予 'c'@'%';刷新权限;
Cela me donne toutes les autorisations dont j'ai besoin et autorise les connexions à distance via l'utilisateur créé dans le fichier de composition.
Je sais que je peux modifier le fichier my.cnf ou ajouter un script d'initialisation qui s'exécute après l'initialisation de mysqld, mais je veux que l'utilisateur soit créé dans Docker-Compose.
Je pense que nous pouvons y parvenir en
MYSQL_INITDB
- en configurant un script d'initialisation dans le conteneur MySQL.Tout d'abord, vous pouvez ajouter une variable d'environnement pour MYSQL_INITDB comme ci-dessous
Ensuite, vous devez mettre à jour la configuration du volume comme suit
Créez un fichier 01.sql dans le même répertoire que votre fichier docker-compose.
Consultez la documentation officielle ici :https://hub.docker.com/_/mysql/Sous le sous-thèmeInitialisation d'une nouvelle instance.