簡體   English   中英

沒有主機模式,mysql從docker到localhost的jdbc url不起作用

[英]jdbc url for mysql from docker to localhost does not work without host mode

我有一個連接到本地MySQL的本地spring boot應用程序,它工作正常。

對於連接,我使用以下屬性:

spring.datasource.url=jdbc:mysql://localhost:3306/pitstop?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

我想將我的應用程序放在docker中並嘗試連接到本地數據庫。
所以我需要修改MySQL url

我使用此命令獲取本地IP ip route show | grep "default" | awk '{print $3}' ip route show | grep "default" | awk '{print $3}' ip route show | grep "default" | awk '{print $3}'結果為192.168.1.1 我這樣修改我的網址

spring.datasource.url=jdbc:mysql://192.168.1.1:3306/pitstop?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

然后嘗試通過命令docker run -p 9001:9001 --network=bizon4ik --rm bizon4ik/mycontainer用我的應用程序啟動docker run -p 9001:9001 --network=bizon4ik --rm bizon4ik/mycontainer ,結果是例外:

Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

我試圖找到另一個IP。 我使用ip addr show命令並找到下一條記錄:

 3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 30:52:cb:db:8d:e0 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.102/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp3s0

因此,基於此,我使用了192.168.1.102並修改了我的網址,但結果是相同的異常。

為了確保已建立的IP是正確的,我使用純ubuntu docker run -it --rm --network=bizon4ik ubuntu運行了一個新容器並檢查了上述IP:

root@268c4d544328:/# nmap -p 3306 192.168.1.1

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-28 17:28 UTC
Nmap scan report for 192.168.1.1
Host is up (0.053s latency).

PORT     STATE    SERVICE
3306/tcp filtered mysql
root@268c4d544328:/# nmap -p 3306 192.168.1.102   

Starting Nmap 7.60 ( https://nmap.org ) at 2019-07-28 15:56 UTC
Nmap scan report for my-host (192.168.1.102)
Host is up (0.000088s latency).

PORT     STATE  SERVICE
3306/tcp closed mysql

這樣看起來很好,ubuntu容器可以ping我的數據庫。 您對我為什么無法通過應用程序連接到數據庫有任何想法?

注意:

我檢查了DB SHOW GRANTS; 結果是將GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION

我還檢查了/etc/mysql/my.cnf文件。 它只有以下記錄:

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

我沒有~/.my.cnf

問題出在MySQL的bind-address中。 我在/etc/mysql/my.cnf查看了它,但是正確的位置是/etc/mysql/mysql.conf.d/mysqld.cnf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM