目前无法从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` |
+-----------------------------------------------------------+
docker ps -a:
当我通过intellij连接时:
即**“拒绝指定的数据库用户/密码组合:[28000][1045]用户“dev '@”localhost“访问被拒绝(使用密码:是)"**
我输入了正确的密码。
任何帮助真的很感激。
谢谢
4条答案
按热度按时间mm5n2pyu1#
正如@danblack提到的,我需要通过tcp连接。
1)获取容器的IP:
docker inspect mysql1
2)我更改了mysql用户以允许从所有位置访问(如提到的here):
'dev'@'%'
之前是'dev'@'localhost'
这一招奏效了:
slhcrj9b2#
解决方案
您没有将端口Map到localhost,因此无法使用localhost,这就是无法使用的原因
vshtjzan3#
如果上面的答案都不适合您:
在我的例子中,我忘记了公开端口,但除此之外,我还在本地运行了mySQL。
所以为了调试这个,我做了以下事情:
上面的操作成功了,我成功地通过终端登录了。
**重要提示:**容器完成后,同样的命令允许我登录本地(非容器化)mySQL。因此,我试图确定两者之间的潜在冲突,因为两者都有相同的端口。
解决方案:我将容器中的数据库暴露在另一个端口309,成功连接。
enabledTLSProtocols: TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
xuo3flqw4#
作为对@Hurricane回复的补充,我附上了
docker inspect yourContainerID
命令我的IP是:
172.17.0.2
如果您使用的是Linux(MacOS),则还可以运行
docker inspect yourContainerID | grep "IPAddress"
来直接检索IPAddress我的问题是卷,所以我创建了一个
docker-compose.yml
文件并运行docker compose up