如何允许Rapache/Brew安全连接到MySQL数据库?
题
我正在使用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
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")
在Brew脚本中使用Rapache启动并使用该参数列表。
不隶属于 StackOverflow