使用存储的凭据通过dplyr连接到MySQL数据库

时间:2015-11-09 18:52:57

标签: r dplyr rmysql

我想使用.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数据库是否有一种不那么冗长的方式?

1 个答案:

答案 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")