mysql - 使用 Intellij 在 Docker 中连接到 MYSQL
问题描述
我刚开始在 Docker 的帮助下做项目(好吧 Docker Toolbox 不是 Docker Desktop)。我在连接容器内运行的 mysql 数据库时遇到了一些问题。基本上我做不到。我已经从 127.0.0.1 更改为 127.0.0.1 可以在此屏幕截图中看到 此连接是使用 IntelliJ GUI 建立的,因此屏幕截图使其更易于理解这给出了错误:指定的数据库用户/密码组合被拒绝:com.mysql.cj.exceptions.CJException:用户'User'@'192.168.99.1'的访问被拒绝(使用密码:是)
docker-compose.yml 是:
version: '3'
services:
mysql:
image: 'mysql:8'
ports:
- '3306:3306'
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=WebShopDatabase
- MYSQL_USER=User
- MYSQL_PASSWORD=Password
此容器已启动并正在运行。我用 docker ps 检查了它,然后 docker inspect docker_mysql_1: 显示如下:
[
{
"Id": "847ef4819da9e29b5ce6d0102ef8175c20b6d0a277583721f4bb28ddc3d3c2f6",
"Created": "2020-05-23T19:17:21.33191426Z",
"Path": "docker-entrypoint.sh",
"Args": [
"mysqld"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 18196,
"ExitCode": 0,
"Error": "",
"StartedAt": "2020-05-23T19:17:21.89238081Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:30f937e841c82981a9a6363f7f6f35ed6b9d5e3f16df50a72207e4a2a389983f",
"ResolvConfPath": "/mnt/sda1/var/lib/docker/containers/847ef4819da9e29b5ce6d0102ef8175c20b6d0a277583721f4bb28ddc3d3c2f6/resolv.conf",
"HostnamePath": "/mnt/sda1/var/lib/docker/containers/847ef4819da9e29b5ce6d0102ef8175c20b6d0a277583721f4bb28ddc3d3c2f6/hostname",
"HostsPath": "/mnt/sda1/var/lib/docker/containers/847ef4819da9e29b5ce6d0102ef8175c20b6d0a277583721f4bb28ddc3d3c2f6/hosts",
"LogPath": "/mnt/sda1/var/lib/docker/containers/847ef4819da9e29b5ce6d0102ef8175c20b6d0a277583721f4bb28ddc3d3c2f6/847ef4819da9e29b5ce6d0102ef8175c20b6d0a277583721f4bb28ddc3d3c2f6-json.log",
"Name": "/docker_mysql_1",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"673702fc973d8e1178ed0d791a7952fe49cf4f8f851149d0d0b9125d391e6390:/var/lib/mysql:rw"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "docker_default",
"PortBindings": {
"3306/tcp": [
{
"HostIp": "",
"HostPort": "3306"
}
]
},
"RestartPolicy": {
"Name": "",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": [],
"CapAdd": null,
"CapDrop": null,
"Capabilities": null,
"Dns": null,
"DnsOptions": null,
"DnsSearch": null,
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "shareable",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": null,
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": false,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
]
},
"GraphDriver": {
"Data": {
"LowerDir": "/mnt/sda1/var/lib/docker/overlay2/271d75cd7adccad82d1f498bf979541eb98a7680b578868a1342227b68afd950-init/diff:/mnt/sda1/var/lib/docker/overlay2/247631e3dcb755e0c6d06b98817d870d33afc3f0e56395589b635071f20ad7bc/diff:/mnt/sda1/var/lib/docker/overlay2/14fa4bd9669e091e620e16d692556fa90c6cf483e046d34b6c2b6005eb5967a8/diff:/mnt/sda1/var/lib/docker/overlay2/59b2da9f3817cbfafc7db9f9aa7ad66a07ce2078caf7d742eac74f0d38aa9ddb/diff:/mnt/sda1/var/lib/docker/overlay2/e05aec6f07c8db106fd4fa34d908af1b2c51fe7ee83b6a688038c4252dd1cb31/diff:/mnt/sda1/var/lib/docker/overlay2/f7b04fe4d47c0c4f6f4ae818b8758449ed5d1c67dfb41384a7c5778e18e0ccf2/diff:/mnt/sda1/var/lib/docker/overlay2/df137f272a8499c320bc6fe053e3b3823d9966922a84f17fc5833b4ab117df8c/diff:/mnt/sda1/var/lib/docker/overlay2/8a1f20096ed32eb7a47ad598e2f211cd7c0581dbf6d4e12867dcb68d4a088f6c/diff:/mnt/sda1/var/lib/docker/overlay2/0a6304a0808d7bff98748b6893419d1e6b707bd8a8b0c4311c859eb7913ea21c/diff:/mnt/sda1/var/lib/docker/overlay2/d798769efed5fe7612b7fddbb29f155f576a3351b6a4e19b063d0147592e0a96/diff:/mnt/sda1/var/lib/docker/overlay2/335fbab71322fc0bc7c4562f36ec985399ae8ab3fb3cc099326ab2dc9ec7c570/diff:/mnt/sda1/var/lib/docker/overlay2/8b563e8933ebf3a2a0656d54542cf8cc6624f3a3a38fecd8f734304e87d0c30e/diff:/mnt/sda1/var/lib/docker/overlay2/cf35e43c86791fd9332fcb49f99c03cc4fae513c1e73e87f46c670733aa64922/diff",
"MergedDir": "/mnt/sda1/var/lib/docker/overlay2/271d75cd7adccad82d1f498bf979541eb98a7680b578868a1342227b68afd950/merged",
"UpperDir": "/mnt/sda1/var/lib/docker/overlay2/271d75cd7adccad82d1f498bf979541eb98a7680b578868a1342227b68afd950/diff",
"WorkDir": "/mnt/sda1/var/lib/docker/overlay2/271d75cd7adccad82d1f498bf979541eb98a7680b578868a1342227b68afd950/work"
},
"Name": "overlay2"
},
"Mounts": [
{
"Type": "volume",
"Name": "673702fc973d8e1178ed0d791a7952fe49cf4f8f851149d0d0b9125d391e6390",
"Source": "/mnt/sda1/var/lib/docker/volumes/673702fc973d8e1178ed0d791a7952fe49cf4f8f851149d0d0b9125d391e6390/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "847ef4819da9",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3306/tcp": {},
"33060/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"MYSQL_ROOT_PASSWORD=root",
"MYSQL_DATABASE=WebShopDatabase",
"MYSQL_USER=User",
"MYSQL_PASSWORD=Password",
"affinity:container==e139d12a2fab507df99eb64c707735b9fd002c90807c3129b5abaf790ae17dca",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GOSU_VERSION=1.12",
"MYSQL_MAJOR=8.0",
"MYSQL_VERSION=8.0.20-1debian10"
],
"Cmd": [
"mysqld"
],
"Image": "mysql:8",
"Volumes": {
"/var/lib/mysql": {}
},
"WorkingDir": "",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"com.docker.compose.config-hash": "47a45119997895f95f6a3be2f1420dec2853da47cdad9b8bd363c36fdfa20c0d",
"com.docker.compose.container-number": "1",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "docker",
"com.docker.compose.service": "mysql",
"com.docker.compose.version": "1.24.1"
}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "223adce42cbcf45c72b4ca47f301cac3c5774e6cc809679f4f029fc664727283",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"3306/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "3306"
}
],
"33060/tcp": null
},
"SandboxKey": "/var/run/docker/netns/223adce42cbc",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"docker_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"mysql",
"847ef4819da9"
],
"NetworkID": "6cf406c0a4f20bc90d959131eead019d19a19c2c17aa054dad9843c470a21d6f",
"EndpointID": "109e141ca8096fcf2350093183f657cf457e80afae04085087fb3c6fb5903d41",
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:12:00:02",
"DriverOpts": null
}
}
}
}
其中清楚地包含上面提到的 docker-compose.yml。容器的 IP 是 172.18.0.2。
由于这不起作用,我尝试使用此处提出的解决方案。这给了我以下 错误,请参见屏幕截图。docker 容器 docker_mysql_1 的 IP(见底部的截图和上面 docker inspect 的输出)是 172.18.0.2。它给出的错误是:[08001] 无法创建与数据库服务器的连接。尝试重新连接 3 次。放弃。java.net.ConnectException:连接超时:连接。
后来有人指出我应该连接到 Docker Toolbox IP,即 192.168.99.100。我在一个hellowrold项目中做到了这一点(其中的屏幕截图是,但我现在有同样的错误,只更改了新项目中的docker-compose.yml,同时复制了所有其他类,所以除了docker-copose之外什么都没有改变。我在上面给出的 .yml ),现在开始了另一个项目(我再次将 docker-compose.yml 更改为上面的内容,并复制了所有其他类),并且 localhost 出现以下错误192.168.99.100 连接:[08001] 无法创建与数据库服务器的连接。尝试重新连接 3 次。放弃。java.net.ConnectException:连接超时:连接。我检查了是否有其他容器在运行,没有。
解决方案
推荐阅读
- python - 以 '\x020' 形式表示整数 > 31 的十六进制形式
- javascript - Angular HttpClient在带有句点的路径上添加斜杠
- python - 如何调整 numpy 数组元素之间的空间?
- ios - 我是否需要征得同意才能在不使用 IDFA 的 iOS 应用中使用 Google Analytics(分析)和 AdMob?
- postgresql - postgresql 中是否有“始终加密”的等效加密实现/扩展可以与 .net core 3.1 一起使用?
- iis - 如何从 url URL rewrite 中删除 #
- r - 如何将股票代码转换为 R 中的唯一整数?
- django - 删除了一个文件夹,得到 ModuleNotFoundError: No module named "api"
- python - kivy buildozer 无法修补文件 setup.py
- python - 如何用 Pytorch 张量中的某个值替换每一行填充为零的行?