Som standard efter distribution har MySQL följande anslutningsbegränsningar:
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)
Av säkerhetsskäl kommer du tydligen inte att kunna ansluta till den utanför docker-avbildningen. Om du behöver ändra det för att tillåta root att ansluta från vilken värd som helst (säg i utvecklingssyfte), gör du:
-
Starta din mysql-bild med alla portmappningar som krävs:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
eller, om fullständig portmappning krävs:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
Om detta är den nya installationen - ta standardlösenordet:
docker logs mysql57 2>&1 | grep GENERATED
-
Anslut med
mysql
klient direkt till mysqld i docker:docker exec -it mysql57 mysql -uroot -p
-
Om detta är den nya installationen kommer du att bli ombedd att ändra lösenordet med
ALTER USER
kommando. Gör det. -
Kör SQL:
update mysql.user set host = '%' where user='root';
-
Avsluta
mysql
klient. -
Starta om behållaren:
docker restart mysql57
Nu kommer du att kunna ansluta från MySQL Workbench till
host: `0.0.0.0`
port: `3306`
Efter alla ändringar kommer frågan att visa:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+