Как я могу позволить Rapache/Brew надежно подключиться к базе данных MySQL?
Вопрос
Я разрабатываю веб -приложение с помощью Rapache и Brew. В коде R я хочу использовать пакет RMYSQL для запроса базы данных MySQL, но я подвергаю сомнению наилучший способ получить доступ к сведению в систему для входа для базы данных из сценария R.
Следующий Некоторые предложения по аналогичной проблеме с PHP, одна из мыслей заключалась в том, чтобы сделать следующее в интерактивном сеансе, чтобы сохранить данные соединения в файле за пределами /var/www
:
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
save(con, file = "/home/myuser/sqlconnect.rda")
А затем в сценарии, запускаемых Rapache/Brew, загрузите .rda
файл:
<%
load("/home/myuser/sqlconnect.rda")
query <- "MY QUERY"
result <- dbGetQuery(con, query)
%>
Я еще не пробовал этот подход. Я даже не уверен, что мой sqlconnect.rda
Файл будет содержать всю информацию, которую он необходим для подключения.
Есть ли более безопасный способ настроить dbConnect()
утверждение?
Обновлять
Сохранение dbConnect()
Вывод в файл не работает, потому что подключение истекло. Однако, source
в .R
Файл из моего пользовательского каталога, содержащего
library(RMySQL)
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
работает.
Тем не менее, я не знаю, насколько защищен этот подход.
Решение
Хотя я просто не понимаю, почему ваше предложение повысит безопасность по сравнению с наличием имени пользователя/пароля в файле сценария R, вы можете сохранить параметры ваших dbConnect
функция Пример:
con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
save(con.details, file='/nonpub/con.details')
И используя эти параметры в ваших файлах пивовара:
load('/nonpub/con.details')
con <- do.call(dbConnect, con.details)
Когда вы используете Rapache, загрузка con.details
На каждом забеге просто не имеет никакого смысла, я бы предпочел поставить эту линию в REvalOnStartup
, что также может спасти вас save/load
проблема :)
Поэтому я предлагаю добавить library(RMySQL); con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
Для запуска Rapache и используйте этот список параметров в сценариях варева.