¿Cómo puedo permitir que Rapache/Brew se conecte de forma segura a una base de datos MySQL?

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

  •  22-10-2019
  •  | 
  •  

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, sourceing 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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top