Comment activer l'accès à distance à l'utilisateur root de MySQL Docker dans le fichier Docker-compose ?
P粉145543872
P粉145543872 2023-09-06 13:10:11
0
1
627

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粉145543872
P粉145543872

répondre à tous(1)
P粉144705065

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal