Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como conectar o mysql workbench para executar o mysql dentro do docker?


Por padrão, após a implantação, o MySQL tem as seguintes restrições de conexão:
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, para fins de segurança, você não poderá se conectar a ele fora da imagem do docker. Se você precisar alterar isso para permitir que o root se conecte de qualquer host (digamos, para fins de desenvolvimento), faça:

  1. Inicie sua imagem mysql com todos os mapeamentos de porta necessários:

    docker run -p 3306:3306 --name=mysql57 -d mysql/mysql-server:5.7

ou, se o mapeamento de porta completo for necessário:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7

  1. Se esta for a nova instalação - pegue a senha padrão:

    docker logs mysql57 2>&1 | grep GENERATED

  2. Conecte-se usando mysql cliente diretamente para o mysqld no docker:

    docker exec -it mysql57 mysql -uroot -p

  3. Se esta for a nova instalação, você será solicitado a alterar a senha usando ALTER USER comando. Faça isso.

  4. Execute SQL:

    update mysql.user set host = '%' where user='root';

  5. Saia do mysql cliente.

  6. Reinicie o contêiner:

    docker restart mysql57

Agora você poderá se conectar do MySQL Workbench ao
host: `0.0.0.0` 
port: `3306`

Após todas as alterações, a consulta mostrará:
select host, user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+