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

Hur*_*ane 10 mysql intellij-idea docker

目前无法从 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` |
+-----------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

docker ps -a:

在此处输入图片说明

当我通过 Intellij 连接时:

在此处输入图片说明

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

我输入了正确的密码。

任何帮助真的很感激。

谢谢,

Hur*_*ane 9

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

1)获取容器的IP:

docker inspect mysql1

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

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

这就成功了:

在此输入图像描述

  • 您可以在 Linux 上使用`docker inform mysqli | grep "IPAddress"` 获取 IP 地址 (4认同)

小智 6

解决方案

您没有将端口映射到本地主机,因此您无法使用本地主机,这就是为什么不能这样做

ports:
  - "3306:3306"
Run Code Online (Sandbox Code Playgroud)