我想使用.my.cnf
访问MySQL数据库,而不必将我的数据库密码存储在平面文本R代码中。因此,我更喜欢引用我的test_db <- src_mysql("test",
default.file=path.expand("~/.my.cnf"),
host=NULL,
user=NULL,
password=NULL)
文件,但由于src_mysql具有主机,用户和密码的默认参数,我能找到的唯一方法是通过相当优雅的方式:
dplyr
通过存储的凭据从Async task
连接到MySQL数据库是否有一种不那么冗长的方式?
答案 0 :(得分:5)
Hadley对此pull request(2014年2月,要求调整代码以允许阅读my.cnf
)和documentation by Hadley(他建议使用my.cnf
和您应该传递NULL值)传递NULL是所需的意图。
如果这很麻烦,请考虑使用以下内容在.Rprofile
中创建一个功能:
src_mysql_from_cnf <- function(dbname,
dir="~/.my.cnf",
host=NULL,
user=NULL,
password=NULL,
...) {
if(!(file.exists(dir)))
stop(sprintf("No such file '%s'",dir))
dplyr::src_mysql(
dbname,
default.file=path.expand(dir),
# explicitly passing null unless otherwise specified.
host=host,
user=user,
password=password,
...)
}
然后你可以
test_db <- src_mysql_from_cnf("test")