Как я могу разрешить Rapache / Brew для безопасного подключения к базе данных MySQL? - PullRequest
7 голосов
/ 05 сентября 2011

Я занимаюсь разработкой веб-приложения с использованием 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")

работает.

Однако я не знаю, насколько безопасен этот подход.

1 Ответ

2 голосов
/ 05 сентября 2011

Хотя я просто не понимаю, почему ваше предложение повысит безопасность по сравнению с именем пользователя / паролем в файле сценария R, вы можете сохранить параметры вашей функции dbConnect.Пример:

con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
save(con.details, file='/nonpub/con.details')

И используя эти параметры в ваших файлах brew:

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 и использовать этот список параметров в скриптах brew.1014 *

...