Ve výchozím nastavení má MySQL po nasazení následující omezení připojení:
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)
Z bezpečnostních důvodů se k němu zřejmě nebudete moci připojit mimo obraz dockeru. Pokud to potřebujete změnit, aby se root mohl připojit z libovolného hostitele (řekněme pro účely vývoje), postupujte takto:
-
Spusťte svůj obraz mysql se všemi požadovanými mapováními portů:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
nebo, pokud je vyžadováno úplné mapování portu:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
Pokud se jedná o novou instalaci, použijte výchozí heslo:
docker logs mysql57 2>&1 | grep GENERATED
-
Připojte se pomocí
mysql
klienta přímo do mysqld v dockeru:docker exec -it mysql57 mysql -uroot -p
-
Pokud se jedná o novou instalaci, budete požádáni o změnu hesla pomocí
ALTER USER
příkaz. Udělejte to. -
Spusťte SQL:
update mysql.user set host = '%' where user='root';
-
Ukončete
mysql
klient. -
Restartujte kontejner:
docker restart mysql57
Nyní se budete moci připojit z MySQL Workbench k
host: `0.0.0.0`
port: `3306`
Po všech změnách dotaz zobrazí:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+