虽然我不知道 SO 法定人数是多少,但问题本身很简单:
当您从 R 连接到数据库时,你们如何处理数据库连接字符串中的密码?
教程经常展示这样的例子。
con <- dbConnect(MySQL(), user="root", password="test",
dbname="research_db", host="localhost",
client.flag=CLIENT_MULTI_STATEMENTS)
如果数据库确实是您的实验本地主机,这可能有点现实。但是,如果您在服务器上与多个用户一起使用它,您可能不希望像这样公开数据库凭据。特别是当将 RStudio Server 与 SQL 数据库结合使用时,您可能想要执行一些加密操作。你的经验是什么?
下面是一段示例代码,它使用 tcltk 包提示输入密码,同时隐藏实际值:
library(tcltk)
tt <- tktoplevel()
pass <- tclVar()
tkpack(tklabel(tt,text='Password:'))
tkpack(tkentry(tt,textvariable=pass,show='*'))
tkpack(tkbutton(tt,text="Done",command=function()tkdestroy(tt)))
tkwait.window(tt)
tclvalue(pass)
在这种情况下,它只是在末尾打印出未隐藏的密码,但您可以将其包装在一个函数中以返回该值,然后将其用作密码参数的值。或者您可以将其和 connect 调用(使用 tclvalue 行作为密码)放在对local
这样包含密码的变量一旦使用就会消失。
Edit
对于 RStudio 和 RStudio 服务器,有一个函数.rs.askForPassword
。像这样使用它:
psswd <- .rs.askForPassword("Database Password:")
con <- dbConnect(MySQL(), user="root", password=psswd,
dbname="research_db", host="localhost",
client.flag=CLIENT_MULTI_STATEMENTS)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)