Es fällt mir schwer, MySQL im Docker in den Griff zu bekommen. Ich habe den Container mit Docker-Compose ausgeführt, kann jedoch keine Verbindung zur Datenbank über Tools wie phpmyadmin, workbench oder tableplus herstellen.

Ich habe mich direkt mit dem laufenden Container verbunden und laufe

mysql -uroot -p

Und habe das Root-Passwort eingegeben, das ich übergeben habe, aber dies schlägt mit diesem Fehler fehl:

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

Hier ist meine Datei docker-compose.yml:

version: '3'

services:
    db:
    image: mysql
    restart: always
    environment:
      MYSQL_DATABASE: quotes
      MYSQL_USER: quotes
      MYSQL_PASSWORD: P@KhzKZp)56sU8n+
      MYSQL_ROOT_PASSWORD: +\VrLG*<t5sq[\\shR29u#n~A3^Jp*
    ports:
      - '3306:3306'
    volumes:
      - /private/mdbdata/quotes:/etc/mysql/conf.d
    expose:
      - '3306'

Ich bin schon seit Tagen dabei ... hoffe, jemand kann helfen!

0
Paul 17 Jän. 2019 im 23:51

3 Antworten

Beste Antwort

Endlich dieses Problem gelöst ... Ich musste alle Sonderzeichen aus den Passwortzeichenfolgen entfernen.

Ich habe es satt, einfache und doppelte Anführungszeichen um die Zeichenfolgen zu setzen, um zu sehen, ob dies die Sonderzeichen zulässt, aber das ist immer noch fehlgeschlagen. Passwörter mussten alphanumerisch sein.

1
Paul 20 Jän. 2019 im 14:32

Ich denke, Ihr Container sucht nach einem MySQL-Server auf 'localhost', der NICHT FUNKTIONIERT. 'localhost' für einen Container ist der Container selbst - NICHT der Host-Computer, auf dem er ausgeführt wird.

Sie sollten über die IP-Adresse des Host-Computers auf den MySQL-Server zugreifen können.

0
MikeBFromPDX 17 Jän. 2019 im 20:56

Haben Sie die hier hier bereitgestellte Lösung ausprobiert? Wenn zuvor ein Container ausgeführt wurde, müssen Sie ihn explizit löschen, da Docker die Root-Passwds (über Volumes ) von zuvor instanziierten Containern verfolgt. Dies geschieht mit vielen Tools. Dies gilt nicht nur für MySQL-Container. Ein einfaches docker-compose rm -v sollte ausreichen, danach den Container aufrufen. Dadurch wird im Grunde das alte Volume von der Festplatte gelöscht und alle Daten aus der vorherigen Containerinstanziierung entfernt.

Sie können auch ein docker ps aufrufen, Ihren Container finden und docker rm -v <CONTAINER_NAME> ausführen. Bringen Sie anschließend Ihren Container hoch.

0
Milan Velebit 17 Jän. 2019 im 21:03