虽然我不知道SO法定人数是多少,但问题本身很简单:
当您从R连接到数据库时,如何处理db连接字符串中的密码?
当您从R连接到数据库时,如何处理db连接字符串中的密码?
教程经常显示一个这样的例子.
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)
在这种情况下,它只是在最后打印出未隐藏的密码,但是可以将其包装在一个函数中以返回该值,然后将其用作password参数的值.或者您可以将此和连接调用(使用tclvalue行作为密码)放在对本地的调用中,以便包含密码的变量在使用时立即消失.