Невозможно получить доступ к MySQL в контейнере с хоста Windows

Я использую рабочую станцию ​​с Windows 11 Professional. Я запускаю контейнерный MySQL в Docker, следуя инструкциям на странице https://hub.docker.com/_/mysql . Там написано, что все, что мне нужно сделать, это бежатьdocker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag, заменив на нужный тег. я использовалlatestдляtag.

Чтобы сделать его доступным для другого программного обеспечения на моей рабочей станции, я также добавляю переключатель. Если я это сделаю, контейнер закроется с этой ошибкой:Enter password: mysqld: Can not perform keyring migration : Invalid --keyring-migration-source option.

Мне остается либо запустить MySQL без переключателя (он предположительно работает, но ничто не может с ним связаться), либо запустить его с-p 3306:3306переключитесь, просто чтобы увидеть, как он терпит неудачу.

Как это должно работать?

(Да, я вижу похожие вопросы, но ни один из них, похоже, не отвечает на эту конкретную проблему. Кроме того, я открыл отчет об ошибке разработчикам контейнера, но они следуют своим инструкциям. Да, это рабочая станция, но она будет работать на сервере. в конце концов, и я думаю, что столкнусь с теми же проблемами.)

1 ответ

После расшифровки комментариев ниже кажется, что вы добавляетеdocker runаргументы ПОСЛЕ имени изображения. Эти аргументы будут переданы процессу внутри контейнера — вероятно, вы видите ошибки mysqld, потому что вы передаете флаги Docker в mysqld. Приведенный ниже ответ все еще применим.


Я не использую Windows, но это должно быть независимо от платформы, если вы используете стандартный клиент для подключения и запуска сервера в Docker.

У вас есть правильные команды Docker, это действительная команда Docker, и она отлично работает, открывая порт 3306:

      docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -d mysql:latest

Журналы Docker для запущенного контейнера показывают:

      [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.32'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.

Проблема, вероятно, существует где-то еще в вашей настройке, не связанная с запуском контейнера с-pаргумент.

Вы уверены, что используете mysqlклиент для связи? (нет mysqld) ??

Пример подключения после запуска сервера:

      >> mysql -u root -p -h 127.0.0.1 -P 3306
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.32 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
Другие вопросы по тегам