Come posso permettere Rapache / birra per connettersi in modo sicuro a un database MySQL?

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

  •  22-10-2019
  •  | 
  •  

Domanda

Sto sviluppando un'applicazione web utilizzando Rapache e birra. All'interno del codice R, voglio usare il pacchetto RMySQL per interrogare un database MySQL, ma io sono in discussione il modo migliore per accedere ai dettagli di login per il database da all'interno dello script R.

A seguito di alcuni suggerimenti per un problema simile con PHP , un pensiero è stato quello di effettuare le seguenti operazioni in una sessione interattiva per salvare i dettagli della connessione a un file al di fuori della /var/www:

con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
save(con, file = "/home/myuser/sqlconnect.rda")

E poi nello script gestito da Rapache / birra, caricare il file .rda:

<%
load("/home/myuser/sqlconnect.rda")
query <- "MY QUERY"
result <- dbGetQuery(con, query)
%>

Non ho ancora provato questo approccio. Io non sono nemmeno sicuro che il mio file sqlconnect.rda conterrà tutte le informazioni di cui ha bisogno per la connessione.

C'è un modo più sicuro per impostare la dichiarazione dbConnect()?

Aggiorna

Salvataggio l'uscita dbConnect() a un file non funziona, perché la connessione è scaduta. Tuttavia, sourceing un file .R dalla mia directory utente contenente

library(RMySQL)
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")

funziona.

Comunque, io non so come sicuro questo approccio è.

È stato utile?

Soluzione

Anche se io non vedo il motivo per cui sarebbe la vostra sicurezza spinta suggerimento rispetto ad avere username / password nel file di script R, è possibile memorizzare i parametri della vostra funzione dbConnect. Esempio:

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

E l'utilizzo di questi parametri nei file BREW:

load('/nonpub/con.details')
con <- do.call(dbConnect, con.details)

Come si utilizza Rapache, carico con.details su ogni corsa semplicemente non ha alcun senso, avrei preferito mettere quella linea in REvalOnStartup, che potrebbe anche risparmiare questo problema save/load:)

Quindi suggerisco di aggiungere library(RMySQL); con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass") a Rapache avvio e utilizzare tale elenco di parametri negli script birra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top