首页 > 解决方案 > 使用 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:连接超时:连接。我检查了是否有其他容器在运行,没有。

标签: mysqldockerintellij-ideadocker-toolbox

解决方案


推荐阅读