我正在使用一个docker容器来运行mysql服务器,以便从我的主机本地开发一个golang应用程序,问题是,我尝试使用各种客户端连接到它,它总是成功地连接,但是在运行查询时返回错误,例如在sqltools for vscode中:
Request connection/GetChildrenForTreeItemRequest failed with message:
ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server;
consider upgrading MySQL client
当我试着和戈朗联系时,我得到了:
go run ./cmd/web
ERROR 2021/12/16 04:28:55 main.go:32: Error 1045: Access denied for user 'web'@'172.18.0.1' (using password: YES)
exit status 1
(Golang数据源是使用mysql驱动程序的"user:pass@/database?parseTime=true“)
然而,DBeaver能够成功地连接,但是如果我试图在不更改任何设置的情况下进行连接,则会得到以下消息:
Connection error:
Public Key Retrieval is not allowed
因此,使用驱动程序设置并将"allowPublicKeyRetrieval“从"false”更改为"true“将使一切正常工作。
有什么方法可以让这个“公钥检索”使用高丽驱动吗?我是否可以从mysql控制台中更改一些内容,这样就不需要了?我无法在文档( https://github.com/go-sql-driver/mysql )中看到任何东西,在找到一种成功连接它的方法之前,我无法继续我的项目:(
发布于 2021-12-16 07:11:18
发布于 2022-01-19 20:16:26
我想你可能已经弄清楚了,但万一你不知道,这是我的答案。
你好像在听“我们走”那本书(我在读)。书中的说明是用CREATE USER 'web'@'localhost';
创建一个用户。如果您看一下错误Error 1045: Access denied for user 'web'@'172.18.0.1'...
,它就会告诉您,这是在尝试在172.18.0.1
而不是localhost
进行连接。
解决这一问题的最简单方法是使用CREATE USER 'web'@'%';
创建用户,其中%
意味着允许来自任何地方的连接。
https://stackoverflow.com/questions/70373900
复制相似问题