作者:歪歪Doris | 来源:互联网 | 2024-10-21 08:00
我正在Docker容器中运行R应用程序,并想使用RMySQL库连接到MySQL 8数据库。我可以使用
Example is loading inside App.vue
终端命令从容器连接到数据库,而没有任何问题,但是当我在R脚本中调用mysql
时,出现未知的SSL连接错误(见下文)。
由于我在终端命令以及R脚本中使用相同的SSL证书,因此它必须与RMySQL使用的MySQL版本有关。我也需要在容器中安装MySQL 5.7,因为其他一些R软件包不能以其他方式构建。但是,根据下面的线程,您可以指定安装RMySQL时要使用的MySQL版本的目录:
adding RMySQL package to R fails (on Windows)?
因此,我在dbConnect()
中设置了$MYSQL_HOME
并命名为/etc/R/Renviron.site
。
显然,您还需要复制一些.lib和.dll文件以使其在Windows中工作,但是在Linux上哪里可以找到等效文件?
数据库处理程序脚本:
install.packages('RMySQL',type='source')
传递给#' @import DBI
#' @import RMySQL
connectToDatabase <- function(myproject.db_config) {
dbConfig <- read.properties(myproject.db_config)
print(dbConfig)
dbHandle <- dbConnect(
MySQL(),dbname = dbConfig$databaseName,host = dbConfig$host,port = as.integer(dbConfig$port),user = dbConfig$user,password = dbConfig$password
)
return(dbHandle)
}
命令的配置文件:
read.properties()
R中的错误消息:
connection_create(主机,用户名,密码,dbname,as.integer(端口)、:
连接失败:SSL连接错误:错误号未知
我自己找到了解决方案。未在dbConnect()
调用中应用SSL证书。它们需要在mysql.cnf
文件中定义,并通过dbConnect()
参数传递到default.file
:
dbHandle <- dbConnect(
MySQL(),dbname = dbConfig$databaseName,host = dbConfig$host,port = as.integer(dbConfig$port),user = dbConfig$user,password = dbConfig$password,default.file = dbConfig$configFile
)
传递给read.properties()
命令的配置文件:
host=domain.subdomain.de
port=3306
user=john.doe
password=mypassword
databaseName=my_db
cOnfigFile=/staging/config/mysql.cnf
mysql.cnf :
[mysqld]
ssl-ca=/staging/mysql-ssl/ca.pem
ssl-cert=/staging/mysql-ssl/client-cert.pem
ssl-key=/staging/mysql-ssl/client-key.pem