4
votes

L'hôte 'X' n'est pas autorisé à se connecter à ce serveur MySQL

Je veux déployer MySQL + PHPMyAdmin. Mon docker-compose.yml:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Après un certain temps, j'obtiens une erreur de sujet. MYSQL_ROOT_HOST n'a pas aidé. Quand j'essaye de me connecter à mysql depuis db-container:

version: "3"
services:
  db:
    image: mysql:5.7
    restart: always
    container_name: db
    volumes:
      - ./~mysql:/var/lib/mysql
      - ./mysql.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      MYSQL_DATABASE: "dbtest"
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_ROOT_HOST: "%"
    networks:
      - db
    command: --default-authentication-plugin=mysql_native_password
    healthcheck:
      test: "mysqladmin ping -h localhost"
      interval: 1s
      timeout: 1s
      retries: 60

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.7
    restart: always
    container_name: phpmyadmin
    ports:
      - 8080:80
    networks:
      - external-net
      - db
    environment:
      PMA_HOST: db
    depends_on:
      - db

networks:
  external-net:
    external:
      name: external-net
  db:
    driver: bridge

Je ne sais vraiment pas quoi faire avec cette magie ... Thx.

p>


1 commentaires

C'est peut-être la même chose qu'ici: stackoverflow.com/questions/44590775/...


3 Réponses :


2
votes

J'ai recréé votre configuration et je viens d'ajouter une configuration ENV pour faire l'affaire, j'ai supprimé la section des volumes car il n'y avait aucun problème avec elle:

docker-compose.yml

version: "3"
services:
  db:
    image: mysql:5.7
    restart: always
    container_name: db
    environment:
      - MYSQL_ROOT_PASSWORD=rootpasswd
      - MYSQL_DATABASE=phpmyadmin
      - MYSQL_USER=user
      - MYSQL_PASSWORD=userpasswd
    networks:
      - db
    command: --default-authentication-plugin=mysql_native_password
    healthcheck:
      test: "mysqladmin ping -h localhost"
      interval: 1s
      timeout: 1s
      retries: 60

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:4.7
    restart: always
    container_name: phpmyadmin
    ports:
      - 8080:80
    networks:
      - external-net
      - db
    environment:
      PMA_HOST: db
    depends_on:
      - db

networks:
  external-net:
    external:
      name: external-net
  db:
    driver: bridge

Accéder à PHPMyadmin avec root: rootpasswd fonctionne bien.


0 commentaires

-2
votes

Dans les paramètres généraux de Docker, activez le démon sans TLS. Je pense que ça marche.

Image Docker


0 commentaires

2
votes

Ce problème peut se produire si les fichiers de votre système local ont été créés de manière corrompue ou ne sont pas correctement accessibles par le démon Docker. Cela peut être dû aux raisons suivantes:

  • Docker ne dispose pas des droits d'accès sur votre disque dur local, sous Windows, par exemple C .
  • Lors de la création de vos conteneurs, Docker ne disposait pas des droits d'accès à votre disque dur local. Même si Docker demande lors du premier processus --build d'autoriser un accès à C sur Windows, ces fichiers peuvent encore être corrompus.

La solution pourrait être de supprimer les fichiers locaux correspondants après que l'accès à Docker a été accordé, dans votre cas, ce sont des fichiers dans / ~ mysql et le fichier mysql.cnf .


0 commentaires