sql >> Databasteknik >  >> RDS >> Mysql

Hur ansluter man mysql workbench till att köra mysql inuti docker?

Som standard efter distribution har MySQL följande anslutningsbegränsningar:

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)

Av säkerhetsskäl kommer du tydligen inte att kunna ansluta till den utanför docker-avbildningen. Om du behöver ändra det för att tillåta root att ansluta från vilken värd som helst (säg i utvecklingssyfte), gör du:

  1. Starta din mysql-bild med alla portmappningar som krävs:

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

eller, om fullständig portmappning krävs:

docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
  1. Om detta är den nya installationen - ta standardlösenordet:

    docker logs mysql57 2>&1 | grep GENERATED

  2. Anslut med mysql klient direkt till mysqld i docker:

    docker exec -it mysql57 mysql -uroot -p

  3. Om detta är den nya installationen kommer du att bli ombedd att ändra lösenordet med ALTER USER kommando. Gör det.

  4. Kör SQL:

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

  5. Avsluta mysql klient.

  6. Starta om behållaren:

    docker restart mysql57

Nu kommer du att kunna ansluta från MySQL Workbench till

host: `0.0.0.0` 
port: `3306`

Efter alla ändringar kommer frågan att visa:

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


  1. Diagnostisera dödlägen i SQL Server 2005

  2. Oracle:Hur tar man reda på om det finns en väntande transaktion?

  3. Kontrollera om en rad finns, annars infogas

  4. 2 sätt att sammanfoga en sträng och ett nummer i Oracle