Wie kann ich Rapache/Brauen zulassen, dass ich mich sicher eine Verbindung zu einer MySQL -Datenbank herstellen kann?

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

  •  22-10-2019
  •  | 
  •  

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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top