De forma predeterminada, después de la implementación, MySQL tiene las siguientes restricciones de conexión:
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)
Aparentemente, por motivos de seguridad, no podrá conectarse a él fuera de la imagen de la ventana acoplable. Si necesita cambiar eso para permitir que la raíz se conecte desde cualquier host (por ejemplo, con fines de desarrollo), haga lo siguiente:
-
Inicie su imagen mysql con todas las asignaciones de puertos requeridas:
docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7
o, si se requiere el mapeo de puertos completo:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
-
Si esta es la instalación nueva, tome la contraseña predeterminada:
docker logs mysql57 2>&1 | grep GENERATED
-
Conéctate usando
mysql
cliente directamente a mysqld en docker:docker exec -it mysql57 mysql -uroot -p
-
Si esta es la instalación nueva, se le pedirá que cambie la contraseña usando
ALTER USER
dominio. Hazlo. -
Ejecutar SQL:
update mysql.user set host = '%' where user='root';
-
Salga de
mysql
cliente. -
Reinicie el contenedor:
docker restart mysql57
Ahora podrá conectarse desde MySQL Workbench a
host: `0.0.0.0`
port: `3306`
Después de todos los cambios, la consulta mostrará:
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+