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:
-
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
-
Wenn dies die Neuinstallation ist - nimm das Standardpasswort:
docker logs mysql57 2>&1 | grep GENERATED
-
Verbinden Sie sich mit
mysql
Client direkt zu mysqld im Docker:docker exec -it mysql57 mysql -uroot -p
-
Wenn dies die Neuinstallation ist, werden Sie aufgefordert, das Passwort mit
ALTER USER
zu ändern Befehl. Tun Sie es. -
Führen Sie SQL aus:
update mysql.user set host = '%' where user='root';
-
Beenden Sie
mysql
Kunde. -
Starten Sie den Container neu:
docker restart mysql57
Jetzt können Sie sich von MySQL Workbench aus mit
verbindenhost: `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 |
+-----------+---------------+