无法通过DataGrip应用程序连接到MySQL的docker实例

3

我已经成功地通过mysql命令行工具连接到运行MySQL的Docker实例。然而,我在JetBrains的DataGrip应用程序中连接MySQL时遇到了问题。

我的mysql cli命令如下:

mysql -h127.0.0.1 --port=8181 -uroot

DataGrip 生成的连接字符串是:

jdbc:mysql://127.0.0.1:8181

我从DataGrip接口中获得的错误是:
[08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up.

我是否漏掉了DataGrip中需要更改的内容?我已经阅读过,连接也必须通过TCP进行。不确定如何检查DataGrip是否正在执行该操作。

更新:最终我发现问题出在我使用的Docker容器上。似乎DataGrip无法连接到8.0.1版本(mysql:8.0.1)的mysql Docker容器。我尝试使用5.7版本的容器并成功连接。


请将连接窗口的截图发送至 maxim.sobolevskiy[at]jetbrains.com,我会帮助您。 - moscas
感谢Jetbrains团队。你们尝试通过发送多封电子邮件来帮助我。 - Leon Lombard
欢迎!谢谢你的报告,Leon! - moscas
2个回答

10
我在使用DataGrip连接MySQL 8.0.3时遇到了问题。您需要从Oracle的网站下载JDBC驱动程序。选择开发人员版本(因为这是一个不稳定的版本)。8.0.8版本适合我。下载并保存在计算机上的项目文件夹或类似位置。稍后您将需要它。
  • 进入DataGrip:文件 > 数据源。单击+并选择Driver:
  • 上述步骤的截图
  • 在部分Driver Files > Additional files中,单击+并选择您刚下载的jar文件
  • 之后,在Class下拉菜单中选择com.mysql.jdbc.Driver
  • Dialect标记为MySQL
  • 在URL模板部分,将Name设置为default,将Template设置为jdbc:mysql://{host::localhost}?[:{port::3306}][/{database}?][\?<&,user={user},password={password},{:identifier}={:identifier}>]
  • 单击应用

完成!

DataGrip上运行的MySQL 8.0.3的截图

使用新驱动程序添加新数据源。

如果您遇到以下错误:

[01S00] The server time zone value 'PDT' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support

您可以进行临时修复,进入“高级”选项卡,并将serverTimezone变量设置为UTC作为示例。


感谢您详细的帖子! - Leon Lombard
在DataGrip中使用MySQL Connector/J 8.0.15时,我不得不使用serverTimezone = America/Los_Angeles而不是PDT,才能使它工作。 - Superduper
使用mysql; 更新用户集,将插件设置为“mysql_native_password”,其中User='root'; 刷新权限; 这也可以解决问题。 - for1096

0

现在没有*.jar文件了,只有在Oracle网站上为我的操作系统提供的*.deb软件包https://dev.mysql.com/downloads/connector/j/5.1.html

因此,我选择了Amazon Aurora MySQL驱动程序来连接我的MySQL 8.0.3 Docker。它可以正常工作!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接