【问题标题】:How to select MySQL version when installing RMySQL in linuxlinux下安装RMySQL时如何选择MySQL版本
【发布时间】:2020-02-29 20:45:27
【问题描述】:

我在 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 中的错​​误消息:

connection_create 中的错误(主机、用户名、密码、数据库名、as.integer(端口),: 连接失败:SSL 连接错误:未知错误号

【问题讨论】:

    标签: mysql r docker rmysql


    【解决方案1】:

    我自己找到了解决方案。 SSL 证书未在 dbConnect() 调用中应用。它们需要在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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多