Rapache/BrewがMySQLデータベースに安全に接続できるようにするにはどうすればよいですか?
質問
RapacheとBrewを使用してWebアプリケーションを開発しています。 Rコード内で、RMYSQLパッケージを使用してMySQLデータベースを照会したいのですが、Rスクリプト内からデータベースのログイン詳細にアクセスする最良の方法に疑問を呈しています。
続く PHPに関する同様の問題に関するいくつかの提案, 、1つの考えは、インタラクティブセッションで以下を行うことでした。 /var/www
:
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
save(con, file = "/home/myuser/sqlconnect.rda")
そして、Rapache/Brewが実行するスクリプトで、ロード .rda
ファイル:
<%
load("/home/myuser/sqlconnect.rda")
query <- "MY QUERY"
result <- dbGetQuery(con, query)
%>
私はまだこのアプローチを試していません。私は私のことさえ確信していません sqlconnect.rda
ファイルには、接続する必要があるすべての情報が含まれます。
セットアップするためのより安全な方法はありますか dbConnect()
声明?
アップデート
保存します dbConnect()
接続がタイムアウトしているため、ファイルへの出力は機能しません。でも、 source
ing a .R
私のユーザーディレクトリを含むファイル
library(RMySQL)
con <- dbConnect(MySQL(), dbname = "mydb", user = "myuser", pass = "mypass")
うまくいきます。
しかし、このアプローチがどれほど安全かはわかりません。
解決
Rスクリプトファイルにユーザー名/パスワードを持っているのと比較して、なぜあなたの提案がセキュリティを高めるのかわかりませんが、あなたのパラメーターを保存することができます dbConnect
関数。例:
con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
save(con.details, file='/nonpub/con.details')
醸造ファイルでこれらのパラメーターを使用してください。
load('/nonpub/con.details')
con <- do.call(dbConnect, con.details)
Rapacheを使用しているとき、ロード con.details
すべての実行では意味がありません、私はむしろそのラインを置きたいです REvalOnStartup
, 、これもあなたを救うことができます save/load
問題 :)
だから私は追加することをお勧めします library(RMySQL); con.details <- list("MySQL", dbname = "mydb", user = "myuser", pass = "mypass")
StartupをRapacheに、Brew Scriptsでそのパラメーターリストを使用します。