Som standard efter implementering har MySQL følgende forbindelsesbegrænsninger:
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)
Tilsyneladende vil du af sikkerhedsmæssige årsager ikke være i stand til at oprette forbindelse til den uden for docker-billedet. Hvis du har brug for at ændre det for at tillade root at oprette forbindelse fra enhver vært (f.eks. til udviklingsformål), skal du gøre:
-
Start dit mysql-billede med alle nødvendige portmappinger:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
eller, hvis den komplette porttilknytning er påkrævet:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
Hvis dette er den nye installation - tag fat i standardadgangskoden:
docker logs mysql57 2>&1 | grep GENERATED
-
Opret forbindelse ved hjælp af
mysql
klient direkte til mysqld i docker:docker exec -it mysql57 mysql -uroot -p
-
Hvis dette er den nye installation, bliver du bedt om at ændre adgangskoden ved at bruge
ALTER USER
kommando. Gør det. -
Kør SQL:
update mysql.user set host = '%' where user='root';
-
Afslut
mysql
klient. -
Genstart beholderen:
docker restart mysql57
Nu vil du være i stand til at oprette forbindelse fra MySQL Workbench til
host: `0.0.0.0`
port: `3306`
Efter alle ændringerne vil forespørgslen vise:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+