我可以从运行RStudio的docker容器内部连接到主机MySQL吗?RStudio容器运行得很好,当我尝试连接到'outside'MySQL将数据写入db时,我遇到了一个问题。
正在尝试
R
只是挂在最后:
library(RMySQL)
library(DBI)
db_user <- Sys.getenv("server_user")
db_password <- Sys.getenv("server_pass")
db_host <- '172.17.0.1' # docker ip
db_dbname <- "test"
mydb <-
dbConnect(
MySQL(),
user = db_user,
password = db_password,
dbname = db_dbname,
host = db_host,
port = 3306
)
Error in .local(drv, ...) :
Failed to connect to database: Error: Can't connect to MySQL server on '172.17.0.1' (107)
为了保持容器与所有端口映射一起运行,我最终向iptables添加了一个规则并连接到数据库,就像从另一台服务器连接到它一样:
sudo iptables -I INPUT 5 -p tcp -s 172.17.0.2 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "docker DB access"
我还在MySQL中创建了一个可以访问数据库的特殊docker用户:
CREATE USER 'docker'@'172.17.0.2' IDENTIFIED BY 'XXX';
GRANT SELECT, INSERT, CREATE ON *.* 'docker'@'172.17.0.2' IDENTIFIED BY 'XXX';