Maison  >  Questions et réponses  >  le corps du texte

Comment activer l'accès à distance à l'utilisateur root de MySQL Docker dans le fichier Docker-compose ?

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.

P粉145543872P粉145543872382 Il y a quelques jours569

répondre à tous(1)je répondrai

  • P粉144705065

    P粉1447050652023-09-07 10:38:13

    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

    MYSQL_INITDB: /docker-entrypoint-initdb.d/01.sql

    Ensuite, vous devez mettre à jour la configuration du volume comme suit

    volumes:
      - ./compose-my-db:/docker-entrypoint-initdb.d

    Créez un fichier 01.sql dans le même répertoire que votre fichier docker-compose.

    GRANT ALL ON *.* TO 'c'@'%';
    FLUSH PRIVILEGES;

    Consultez la documentation officielle ici : https://hub.docker.com/_/mysql/ Sous le sous-thème Initialisation d'une nouvelle instance.

    répondre
    0
  • Annulerrépondre