gpt4 book ai didi

mysql - 无法从docker连接MYSQL

转载 作者:行者123 更新时间:2023-11-29 15:38:20 28 4
gpt4 key购买 nike

我已经下载了 MYSQL docker 镜像,并尝试使用 Docker 检查的 IP 地址部分中给出的主机(例如 172.17.0.2)、端口 3306 连接到 MYSQL > 、用户名 :root 和数据库:MYSQL

我正在尝试使用以下数据库连接运行 R 脚本:

con <- dbConnect(RMySQL::MySQL(), 
dbname = “mysql”,
host=“172.17.0.2”,
port=3306,
username = “root”,
password = )

但我收到一条错误消息,指出主机不存在。我什至尝试使用主机的各种选项,例如“localhost”。但我仍然无法连接,并显示错误消息:

Error in .local(drv, …) :
Failed to connect to database: Error: Can’t connect to MySQL server on ‘172.17.0.2’ (0)
Calls: dbConnect -> dbConnect -> .local -> .Call

请帮忙解决这个问题。

最佳答案

尝试使用localhost进行连接,这意味着R容器的本地主机,而不是数据库。

您可以直接连接容器 IP,但在 Docker 的情况下,如果重新启动数据库,IP 会频繁更改,容器的 IP 将会更改。

最好使用 Docker-compose,这将使两个容器保持在同一网络中,并且 R 容器将能够使用容器的名称进行连接。

另外,验证 MySQL 容器的日志是否已启动或者您可以从 MySQL 客户端连接吗?

你可以尝试类似的事情

version: '3.3'

services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: my_db
MYSQL_USER: my_user
MYSQL_PASSWORD: my_pass

web:
depends_on:
- db
image: r-base:latest
ports:
- "8000:80"
restart: always
volumes:
db_data: {}

因此,在这种情况下,您的 MySQL 连接字符串将是

dbname = “mydb”, host=“db”, port=3306, username = “root”, password =root_password

或者另一个选项是将主机 IP 传递给 R 容器,而不是使用容器 IP。

docker run -it --add-host=db:192.168.x.x r_base_image

所以现在主机将是

dbname = “mydb”, host=“db”

关于mysql - 无法从docker连接MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57984696/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com