Как я могу позволить Rapache/Brew надежно подключиться к базе данных MySQL?

StackOverflow https://stackoverflow.com/questions/7303004

  •  22-10-2019
  •  | 
  •  

Вопрос

Я разрабатываю веб -приложение с помощью 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 и используйте этот список параметров в сценариях варева.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top