无法通过本地主机通过 HeidiSQL 连接到 mysql 容器

Unable to connect to mysl container via HeidiSQL via localhost

环境:

我已经通过以下命令在 Windows 11 上创建并启动了一个 Docker 容器:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest

然后我使用以下选项创建了一个新的 HeidiSQL 会话:

图书馆:libmysql.dll
主机:127.0.0.1
用户:root
密码:root
端口:3306

点击“打开”后,显示 “无法连接到‘127.0.0.1’(10061) 上的 MySQL 服务器”

我可以通过终端连接到容器。

经过一些研究和一些实验,我找到了解决方案。

首先必须强制端口转发为3306:3306。
您必须使用参数 -p 3306:3306.

创建并 运行 Docker 容器
docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:latest

现在错误改了,不过至少可以连上服务器

“用户 'root'@'172.17.0.1' 的访问被拒绝(使用密码:YES)”

现在在网上找到的大多数解决方案都会告诉您创建一个新用户 'root'@'172.17.0.1' 并授予该用户所有权限。

但是,即使在创建用户后,HeidiSQL 也无法再次登录(同样的“访问被拒绝”错误)。
奇怪的是,如果您使用终端以新用户登录,然后尝试使用 HeidiSQL 登录,现在可以了,每次重新启动容器时都会发生这种情况。

搜索后我发现了这个:https://github.com/HeidiSQL/HeidiSQL/issues/980

所以问题是libmysql.dll已经过时了,不支持了,每次用HeidiSQL第一次访问都失败

您必须切换到也与 mysql 兼容的 libmariadb.dll,不需要创建新用户。

不要使用 libmysql-6.1.dll,因为由于某些原因会崩溃并且无法工作...