Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verbinde ich MySQL Workbench mit dem Ausführen von MySQL im Docker?

Standardmäßig hat MySQL nach der Bereitstellung die folgenden Verbindungsbeschränkungen:

mysql> select host, user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
4 rows in set (0.00 sec)

Anscheinend können Sie aus Sicherheitsgründen keine Verbindung zu ihm außerhalb des Docker-Images herstellen. Wenn Sie dies ändern müssen, damit root sich von jedem Host aus verbinden kann (z. B. für Entwicklungszwecke), tun Sie Folgendes:

  1. Starten Sie Ihr MySQL-Image mit allen erforderlichen Portzuordnungen:

    docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7

oder, wenn das vollständige Port-Mapping erforderlich ist:

docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
  1. Wenn dies die Neuinstallation ist - nimm das Standardpasswort:

    docker logs mysql57 2>&1 | grep GENERATED

  2. Verbinden Sie sich mit mysql Client direkt zu mysqld im Docker:

    docker exec -it mysql57 mysql -uroot -p

  3. Wenn dies die Neuinstallation ist, werden Sie aufgefordert, das Passwort mit ALTER USER zu ändern Befehl. Tun Sie es.

  4. Führen Sie SQL aus:

    update mysql.user set host = '%' where user='root';

  5. Beenden Sie mysql Kunde.

  6. Starten Sie den Container neu:

    docker restart mysql57

Jetzt können Sie sich von MySQL Workbench aus mit

verbinden
host: `0.0.0.0` 
port: `3306`

Nach all den Änderungen zeigt die Abfrage:

select host, user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+