Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment connecter mysql workbench à l'exécution de mysql dans docker?

Par défaut, après le déploiement, MySQL a les restrictions de connexion suivantes :

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)

Apparemment, pour des raisons de sécurité, vous ne pourrez pas vous y connecter en dehors de l'image Docker. Si vous devez modifier cela pour permettre à root de se connecter depuis n'importe quel hôte (par exemple, à des fins de développement), faites :

  1. Démarrez votre image mysql avec tous les mappages de port requis :

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

ou, si le mappage de port complet est requis :

docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
  1. S'il s'agit de la nouvelle installation, saisissez le mot de passe par défaut :

    docker logs mysql57 2>&1 | grep GENERATED

  2. Connectez-vous en utilisant mysql client directement sur mysqld dans docker :

    docker exec -it mysql57 mysql -uroot -p

  3. S'il s'agit de la nouvelle installation, il vous sera demandé de changer le mot de passe en utilisant ALTER USER commande. Faites-le.

  4. Exécutez SQL :

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

  5. Quittez mysql client.

  6. Redémarrez le conteneur :

    docker restart mysql57

Vous pourrez maintenant vous connecter depuis MySQL Workbench à

host: `0.0.0.0` 
port: `3306`

Après toutes les modifications, la requête affichera :

select host, user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+