无法从 Windows 主机访问容器中的 MySQL

无法从 Windows 主机访问容器中的 MySQL

我在 Windows 11 Professional 工作站上。我按照以下说明在 Docker 中运行容器化的 MySQLhttps://hub.docker.com/_/mysql。它说我需要做的就是运行docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tagtag用所需的标签替换。我使用latesttag

为了使工作站上的其他软件可以访问它,我还添加了一个-p 3306:3306开关。如果我这样做,容器会关闭并显示以下错误:Enter password: mysqld: Can not perform keyring migration : Invalid --keyring-migration-source option.

我剩下的选择是,要么在不使用-p 3306:3306开关的情况下启动 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> 

相关内容