Wie kann ich Rapache/Brauen zulassen, dass ich mich sicher eine Verbindung zu einer MySQL -Datenbank herstellen kann?
Frage
Ich entwickle eine Webanwendung mit Rapache und Brauen. Im R -Code möchte ich das RMYSQL -Paket verwenden, um eine MySQL -Datenbank abzufragen, aber ich frage den besten Weg, um auf die Anmeldedetails für die Datenbank innerhalb des R -Skripts zuzugreifen.
Folgen Einige Vorschläge für ein ähnliches Problem mit PHP, Ein Gedanke war, in einer interaktiven Sitzung Folgendes zu verfolgen, um die Verbindungsdetails in einer Datei außerhalb von /var/www
:
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
save(con, file = "/home/myuser/sqlconnect.rda")
Und dann laden im Skript, das von Rapache/Brew ausgeführt wird .rda
Datei:
<%
load("/home/myuser/sqlconnect.rda")
query <- "MY QUERY"
result <- dbGetQuery(con, query)
%>
Ich habe diesen Ansatz noch nicht ausprobiert. Ich bin mir nicht einmal sicher, dass mein sqlconnect.rda
Die Datei enthält alle Informationen, die sie herstellen müssen.
Gibt es eine sicherere Möglichkeit, die einzurichten dbConnect()
Aussage?
Aktualisieren
Retten dbConnect()
Die Ausgabe einer Datei funktioniert nicht, da die Verbindung zeitlich festgelegt ist. Jedoch, source
a .R
Datei aus meinem Benutzerverzeichnis, das enthält
library(RMySQL)
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
funktioniert.
Ich weiß jedoch nicht, wie sicher dieser Ansatz ist.
Lösung
Obwohl ich einfach nicht verstehe, warum Ihr Vorschlag die Sicherheit im Vergleich zu Benutzername/Passwort in der R -Skriptdatei stärken würde, können Sie die Parameter Ihrer speichern dbConnect
Funktion. Beispiel:
con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
save(con.details, file='/nonpub/con.details')
Und verwenden diese Parameter in Ihren Brauendateien:
load('/nonpub/con.details')
con <- do.call(dbConnect, con.details)
Wenn Sie Rapache verwenden, laden Sie con.details
Bei jedem Lauf macht ich einfach keinen Sinn, ich würde diese Linie lieber einsetzen REvalOnStartup
, was Ihnen auch das ersparen könnte save/load
Ausgabe :)
Also schlage ich vor, hinzuzufügen library(RMySQL); con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
zum Rapache Startup und verwenden Sie diese Parameterliste in den Brew -Skripten.