sql >> Databáze >  >> RDS >> Mysql

Jak připojit pracovní stůl mysql ke spuštění mysql uvnitř dockeru?

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:

  1. 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
  1. Pokud se jedná o novou instalaci, použijte výchozí heslo:

    docker logs mysql57 2>&1 | grep GENERATED

  2. Připojte se pomocí mysql klienta přímo do mysqld v dockeru:

    docker exec -it mysql57 mysql -uroot -p

  3. Pokud se jedná o novou instalaci, budete požádáni o změnu hesla pomocí ALTER USER příkaz. Udělejte to.

  4. Spusťte SQL:

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

  5. Ukončete mysql klient.

  6. 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     |
+-----------+---------------+


  1. Jak odinstalujete MySQL z Mac OS X?

  2. Nejčistší způsob, jak vytvořit řetězec SQL v Javě

  3. Získejte horní 1 řádek každé skupiny

  4. Jak zrušíte všechna aktuální připojení k databázi SQL Server 2005?