在 linux 中安装 RMySQL 时如何 select MySQL 版本
How to select MySQL version when installing RMySQL in linux
我是 运行 Docker 容器中的 R 应用程序,我想使用 RMySQL 库连接到 MySQL 8 数据库。我可以使用 mysql
终端命令从容器连接到数据库,没有任何问题,但是当我在我的 R 脚本中调用 dbConnect()
时,我收到一个未知的 SSL 连接错误(见下文)。
由于我在终端命令以及我的 R 脚本中使用相同的 SSL 证书,它一定与 RMySQL 使用的 MySQL 版本有关。我也需要在容器中安装 MySQL 5.7,否则无法构建其他一些 R 包。但是,根据下面的线程,您可以指定安装 RMySQL 时要使用的 MySQL 版本的目录:
adding RMySQL package to R fails (on Windows)?
所以我在/etc/R/Renviron.site
中设置了$MYSQL_HOME
并调用了install.packages('RMySQL',type='source')
。
显然您还需要复制一些 .lib 和 .dll 文件才能使其在 Windows 中运行,但是我在哪里可以找到 Linux 中的等效文件?
数据库处理程序脚本:
#' @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()
命令的配置文件:
host=domain.subdomain.de
port=3306
user=john.doe
password=mypassword
databaseName=my_db
ssl-ca=/staging/mysql-ssl/ca.pem
ssl-cert=/staging/mysql-ssl/client-cert.pem
ssl-key=/staging/mysql-ssl/client-key.pem
R 中的错误消息:
Error in connection_create(host, username, password, dbname, as.integer(port), :
Failed to connect: SSL connection error: unknown error number
我自己找到了解决方案。 dbConnect()
调用中未应用 SSL 证书。它们需要在 mysql.cnf
文件中定义,该文件在 default.file
参数中传递给 dbConnect()
:
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
我是 运行 Docker 容器中的 R 应用程序,我想使用 RMySQL 库连接到 MySQL 8 数据库。我可以使用 mysql
终端命令从容器连接到数据库,没有任何问题,但是当我在我的 R 脚本中调用 dbConnect()
时,我收到一个未知的 SSL 连接错误(见下文)。
由于我在终端命令以及我的 R 脚本中使用相同的 SSL 证书,它一定与 RMySQL 使用的 MySQL 版本有关。我也需要在容器中安装 MySQL 5.7,否则无法构建其他一些 R 包。但是,根据下面的线程,您可以指定安装 RMySQL 时要使用的 MySQL 版本的目录:
adding RMySQL package to R fails (on Windows)?
所以我在/etc/R/Renviron.site
中设置了$MYSQL_HOME
并调用了install.packages('RMySQL',type='source')
。
显然您还需要复制一些 .lib 和 .dll 文件才能使其在 Windows 中运行,但是我在哪里可以找到 Linux 中的等效文件?
数据库处理程序脚本:
#' @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()
命令的配置文件:
host=domain.subdomain.de
port=3306
user=john.doe
password=mypassword
databaseName=my_db
ssl-ca=/staging/mysql-ssl/ca.pem
ssl-cert=/staging/mysql-ssl/client-cert.pem
ssl-key=/staging/mysql-ssl/client-key.pem
R 中的错误消息:
Error in connection_create(host, username, password, dbname, as.integer(port), : Failed to connect: SSL connection error: unknown error number
我自己找到了解决方案。 dbConnect()
调用中未应用 SSL 证书。它们需要在 mysql.cnf
文件中定义,该文件在 default.file
参数中传递给 dbConnect()
:
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