7

rapache と brew を使用して Web アプリケーションを開発しています。R コード内で、RMySQL パッケージを使用して MySQL データベースにクエリを実行したいのですが、R スクリプト内からデータベースのログインの詳細にアクセスする最良の方法を疑問に思っています。

PHP での同様の問題に対するいくつかの提案に続いて、インタラクティブ セッションで次のことを実行して、接続の詳細を の外部のファイルに保存することを考えました/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します.R

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

動作します。

ただし、このアプローチがどれほど安全かはわかりません。

4

1 に答える 1

2

Rスクリプトファイルにユーザー名/パスワードを含めることと比較して、あなたの提案がセキュリティを強化する理由はわかりませんが、dbConnect関数のパラメーターを保存できます。例:

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

そして、brew ファイルでこれらのパラメーターを使用します。

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")、rApache スタートアップに追加して、brew スクリプトでそのパラメータ リストを使用することをお勧めします。

于 2011-09-05T14:27:30.690 に答える