¿Cómo puedo permitir que Rapache/Brew se conecte de forma segura a una base de datos MySQL?
Pregunta
Estoy desarrollando una aplicación web usando rapache y cerveza. Dentro del código R, quiero usar el paquete RMYSQL para consultar una base de datos MySQL, pero estoy cuestionando la mejor manera de acceder a los detalles de inicio de sesión para la base de datos desde el script R.
Siguiendo Algunas sugerencias para un problema similar con PHP, un pensamiento era hacer lo siguiente en una sesión interactiva para guardar los detalles de conexión en un archivo fuera de /var/www
:
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
save(con, file = "/home/myuser/sqlconnect.rda")
Y luego en el guión ejecutado por rapache/brew, cargue el .rda
expediente:
<%
load("/home/myuser/sqlconnect.rda")
query <- "MY QUERY"
result <- dbGetQuery(con, query)
%>
Todavía no he probado este enfoque. Ni siquiera estoy seguro de que mi sqlconnect.rda
El archivo contendrá toda la información que necesita conectarse.
¿Hay una forma más segura de configurar el dbConnect()
¿declaración?
Actualizar
Guardando el dbConnect()
La salida a un archivo no funciona, porque la conexión se ha agotado. Sin embargo, source
ing a .R
Archivo de mi directorio de usuario que contiene
library(RMySQL)
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
funciona.
Sin embargo, no sé qué tan seguro es este enfoque.
Solución
Aunque no veo por qué su sugerencia aumentaría la seguridad en comparación con tener nombre de usuario/contraseña en el archivo de script R, podría almacenar los parámetros de su dbConnect
función. Ejemplo:
con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
save(con.details, file='/nonpub/con.details')
Y usando esos parámetros en sus archivos de cerveza:
load('/nonpub/con.details')
con <- do.call(dbConnect, con.details)
Mientras usa rapache, cargando con.details
En cada carrera simplemente no tiene ningún sentido, prefiero poner esa línea en REvalOnStartup
, que también podría salvarte esto save/load
tema :)
Entonces sugiero agregar library(RMySQL); con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
Para el inicio de rapache y use esa lista de parámetros en los scripts de cerveza.