Я запускаю приложение R в контейнере Docker и хотел бы подключиться к базе данных MySQL 8 с помощью библиотеки RMySQL. Я могу без проблем подключиться к базе данных из контейнера, используя команду терминала mysql
, но когда я вызываю dbConnect()
в моем R-скрипте, я получаю неизвестную ошибку соединения SSL (см. Ниже).
КакЯ использую те же сертификаты SSL с терминальной командой, что и в моем R-скрипте, он должен иметь отношение к версии MySQL, используемой RMySQL. Мне также нужно установить MySQL 5.7 в контейнер, так как некоторые другие пакеты R не могут быть собраны иначе. Однако, согласно приведенному ниже потоку, вы можете указать каталог версии MySQL, который будет использоваться при установке RMySQL:
не удается добавить пакет RMySQL в R (в Windows)?
Итак, я установил $MYSQL_HOME
в /etc/R/Renviron.site
и назвал 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: неизвестный номер ошибки