Невозможно получить доступ к 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>