Na implementatie heeft MySQL standaard de volgende verbindingsbeperkingen:
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)
Blijkbaar kun je er om veiligheidsredenen geen verbinding mee maken buiten de docker-image. Als je dat moet wijzigen zodat root verbinding kan maken vanaf elke host (bijvoorbeeld voor ontwikkelingsdoeleinden), doe dan:
-
Start uw mysql-afbeelding met alle vereiste poorttoewijzingen:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
of, als de volledige poorttoewijzing vereist is:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
Als dit de nieuwe installatie is, pak dan het standaardwachtwoord:
docker logs mysql57 2>&1 | grep GENERATED
-
Maak verbinding met
mysql
client rechtstreeks naar de mysqld in docker:docker exec -it mysql57 mysql -uroot -p
-
Als dit de nieuwe installatie is, wordt u gevraagd het wachtwoord te wijzigen met
ALTER USER
opdracht. Doe het. -
SQL uitvoeren:
update mysql.user set host = '%' where user='root';
-
Sluit de
mysql
klant. -
Herstart de container:
docker restart mysql57
U kunt nu verbinding maken vanuit MySQL Workbench naar
host: `0.0.0.0`
port: `3306`
Na alle wijzigingen zal de zoekopdracht het volgende tonen:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+