繁体   English   中英

无法从 Intellij 连接到在 docker 容器中运行的 mySql - “指定的数据库用户/密码组合被拒绝”

[英]Unable to connect from Intellij to mySql running in docker container - "specified database user/password combination is rejected"

目前无法从 Intellij 连接到在 ubuntu 的 docker 容器上本地运行的 mySql。

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| tasklogs           |
+--------------------+

+----------+-----------+------+
| DATABASE | HOST      | USER |
+----------+-----------+------+
| tasklogs | localhost | dev  |
| tasklogs | localhost | root |
+----------+-----------+------+

+-----------------------------------------------------------+
| Grants for dev@localhost                                  |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO `dev`@`localhost`                   |
| GRANT ALL PRIVILEGES ON `tasklogs`.* TO `dev`@`localhost` |
+-----------------------------------------------------------+

码头工人ps -a:

在此处输入图像描述

当我通过 intellij 连接时:

在此处输入图像描述

“指定的数据库用户/密码组合被拒绝:[28000][1045] 用户'dev'@'localhost'的访问被拒绝(使用密码:YES)”

我正在输入正确的密码。

任何帮助都非常感谢。

谢谢,

正如@danblack 提到的,我需要通过 tcp 连接。

1)获取容器的IP:

docker inspect mysql1

2)我更改了 mysql 用户以允许从所有位置访问(如此所述):

'dev'@'%'以前是'dev'@'localhost'

那成功了:

在此处输入图像描述

解决方案

你没有将你的端口映射到 localhost 所以你不能使用 localhost 这就是为什么不能这样做

ports:
  - "3306:3306"

如果以上答案都不适合您:

在我的情况下,我忘记了公开端口,但此外我还让 mySQL 在本地运行。

所以为了调试这个,我做了以下事情:

mysql -h localhost -P 3306 --protocol=tcp -u root --password=password

以上是成功的,我设法通过终端登录。

重要提示:容器完成后,相同的命令允许我登录到本地(非容器化)mySQL。 因此,我试图确定两者之间的潜在冲突,因为它们具有相同的端口。

解决方案:我将容器中的数据库暴露在不同的端口3309中,从而成功连接。

ports:
  - "3309:3306"

检查以下内容也可能有所帮助:

  • 在 Advanced 选项卡中,将以下值添加到 enabledTLSProtocols 设置(在此处参考): enabledTLSProtocols: TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
  • 驱动文件:MySQL Connector/J ver 8.0.15

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM