Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用jdbc从eclipse连接到docker容器_Java_Eclipse_Docker_Jdbc - Fatal编程技术网

Java 如何使用jdbc从eclipse连接到docker容器

Java 如何使用jdbc从eclipse连接到docker容器,java,eclipse,docker,jdbc,Java,Eclipse,Docker,Jdbc,我已经从docker hub下载了docker imagemysql/mysql服务器,并使用以下命令运行了一个容器: docker-run--name-e MYSQL\u ROOT\u PASSWORD=-d MYSQL:MYSQL服务器 我使用命令docker exec-it mysql-uroot-p以交互模式打开了mysql,创建了一个数据库、表,并使用以下命令将其所有权限授予我的机器ip: mysql> create user 'uname'@'<machine ip>

我已经从docker hub下载了docker image
mysql/mysql服务器
,并使用以下命令运行了一个容器:

docker-run--name-e MYSQL\u ROOT\u PASSWORD=-d MYSQL:MYSQL服务器

我使用命令
docker exec-it mysql-uroot-p
以交互模式打开了
mysql
,创建了一个数据库、表,并使用以下命令将其所有权限授予我的机器ip:

mysql> create user 'uname'@'<machine ip>' identified by 'pwd'; 
mysql> create database <dbname>; 
mysql> grant all privileges on <dbname>. * to 'uname'@'<machine ip>' identified by '<pwd>';  
mysql> flush privileges; 
mysql>创建由“pwd”标识的用户“uname@”;
mysql>创建数据库;
mysql>在上授予所有权限。*对“”标识的@“”进行“uname”;
mysql>刷新权限;
我打开了eclipse,使用
数据源浏览器创建了一个db连接,并使用
jdbc:mysql://:3306/dbname
进行连接。当我测试我的连接时,它会说:

连接超时


有人能告诉我哪里出了错吗?

在docker for Mac中,您不能通过容器ip访问服务

在docker for Windows中,您可以访问容器ip,但需要配置防火墙

执行此操作的最佳和最安全的方法是使用
-p
选项进行端口映射:

docker run --name <name of my container> -e MYSQL_ROOT_PASSWORD=<my pwd > -d -p 3306:3306 mysql:mysql-server
您的连接将位于
jdbc:mysql://localhost:3306/dbname
还有


如果这不起作用,请确保您的代理允许您接受3306上的连接。

我在谷歌上搜索了相同的问题,发现了这个问题


因此,如果您浏览该线程,您将发现它将以您希望的方式在Linux上运行,方法是使用容器IP
localhost:3306

,请清理您的问题并确保其格式正确。请注意,您没有在docker运行中指定端口映射,因此无法访问。修复了语法、格式、,和标点问题。如何在mac中通过容器ip访问服务?我尝试了与您提到的相同的过程,但仍然获得连接超时容器ID映像命令创建状态端口名称16b0bd5bee9e mysql/mysql服务器“/entrypoint.sh my…”2小时前上升2小时(健康)0.0.0.0:3306->3306/tcp,33060/tcp数据库即使容器已启动并正在运行,我也无法访问我已尝试使用localhost和容器ip,但在这两种情况下都显示超时。出现以下错误无法连接到新的MySQL。创建到新MySQL的SQL模型连接时出错。(错误:通信链路故障成功发送到服务器的最后一个数据包是0毫秒前。驱动程序尚未从服务器收到任何数据包。)通信链路故障当我尝试ping我的容器ip时,它给出了以下错误ping 172.17.0.2 ping 172.17.0.2(172.17.0.2):56 icmp的数据字节请求超时\u seq 0 icmp的请求超时\u seq 1是否可以从存在eclipse的同一台计算机访问容器?是的,因为docker容器有自己的IP,所以您可以使用docker inspect命令,它也可以工作。
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=dbname -e MYSQL_USER=user -e MYSQL_PASSWORD=password -p 3306:3306 -d mysql