Экземпляр MySQL в Docker не устанавливает пароль root - любой вход без пароля разрешен - PullRequest
0 голосов
/ 30 июня 2019

Я установил новый компьютер под управлением macOS 10.14.5 и Docker Desktop community 2.0.0.3 (31259) и заметил, что мой контейнер MySQL не создавался должным образом.Это команда, которую я выполнял на моем предыдущем компьютере:

docker run --name virtual-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql:5.7.22

Это сработало: оно правильно установило пароль root.Но на новом компьютере, когда я запускаю эту команду, пароль root НЕ устанавливается.Я могу войти в систему как пользователь root, но только если я оставлю пароль пустым.Только пользователь root может создать базу данных.

Но, что более любопытно, я могу указать НИЧЕГО в качестве пользователя, например, asdf и успешно войти в систему (!!!).Когда я вхожу как несуществующий пользователь, я могу только просматривать information_schema и не могу создать базу данных, однако - я получаю сообщение об ошибке: Access denied for user ''@'localhost' to database 'asdf' - что говорит о том, что, возможно, мой клиент не отправляетучетные данные для входа правильно (я использую Sequel Pro 1.1.2 в качестве клиента MySQL).

Может кто-нибудь объяснить это странное поведение?

1 Ответ

0 голосов
/ 01 июля 2019

После некоторого полезного подталкивания я выяснил, где это происходит.

Первая проблема: одно из установленных приложений установило экземпляр MySQL на хост-ОС.Я не заметил этого, потому что я сделал which mysql из открытого окна терминала, у которого не было обновлено его PATH.

Вторая проблема: mysqld продолжал запускать процесс, связанный с портом 3306. Я не сделал 'не замечаю этого, пока lsof -Pnl +M -i4 | grep 'LISTEN'lsof -Pnl +M -i4 | grep 'LISTEN' не обнаружитУ меня были подозрения, когда я мог вызывать новые докеризованные экземпляры, привязанные к другим портам.

Поэтому решение состояло в том, чтобы Тщательно удалить mysql (и mysqld), а затем REBOOT, чтобы встряхнуть все висячие соединения.Как только я это сделал, мои докеризованные версии работали нормально.

...