【发布时间】:2020-09-28 04:54:52
【问题描述】:
我在 docker 容器中运行 sql server`
docker pull mysql/mysql-server:latest
docker run --name=my_sql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql/mysql-server:latest
docker exec -it my_sql mysql -u root -p
#Create table in mysql running in container.
CREATE DATABASE hello_java CHARACTER SET utf8 COLLATE utf8_general_ci;
这一切都成功地完成了。 现在,当我尝试使用 Java 连接到 db 时,出现错误。
String url = "jdbc:mysql://192.168.56.101:3306/hello_java";
DriverManager.getConnection(url, "root", "1234");
System.out.println("Connection establised....");
192.168.56.101 是我的虚拟机的 ip。我在 VM 上运行 Linux。
我收到通信链路故障错误。
我用谷歌搜索并在以下链接上找到了一些解决方案,但没有一个对我有用。
Solving a "communications link failure" with JDBC and MySQL
How to connect with MySQL DB running as container in docker?
我对 /etc/my.cnf 文件进行了更改,但似乎没有帮助。
谢谢。
【问题讨论】:
-
所以你有你的主机操作系统,里面有你的 Linux VM (192.168.56.101),里面有你的 MySQL docker 容器,对吧?如果你 ssh 进入你的 Linux VM,你可以使用 mysql 命令行客户端从 Linux VM 连接到 MySQL 吗?例如
mysql -u root -h 127.0.0.1 -p。如果是这样,您能否使用 mysql 客户端(CLI 或 GUI)从主机操作系统连接到 Linux VM,以确保端口 3306 对 VM 开放? -
端口已打开。我可以从我的主机操作系统
telnet 192.168.56.101 3306。 192.168.56.101 是我的虚拟机的 IP。
标签: mysql docker containers