使用存储的凭据通过 dplyr 连接到 MySQL 数据库
Connect to MySQL database via dplyr using stored credentials
我想使用 dplyr
访问 MySQL 数据库,而不必将我的数据库密码存储在平面文本 R 代码中。因此,我更愿意引用我的 .my.cnf
文件,但由于 src_mysql 具有主机、用户和密码的默认参数,我能找到的唯一方法是通过而不是在-优雅:
test_db <- src_mysql("test",
default.file=path.expand("~/.my.cnf"),
host=NULL,
user=NULL,
password=NULL)
是否有更简洁的方法通过存储的凭据从 dplyr
连接到 MySQL 数据库?
从 Hadley 对此 pull request (Feb 2014, asking to adapt code to allow reading my.cnf
) and the 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")
我想使用 dplyr
访问 MySQL 数据库,而不必将我的数据库密码存储在平面文本 R 代码中。因此,我更愿意引用我的 .my.cnf
文件,但由于 src_mysql 具有主机、用户和密码的默认参数,我能找到的唯一方法是通过而不是在-优雅:
test_db <- src_mysql("test",
default.file=path.expand("~/.my.cnf"),
host=NULL,
user=NULL,
password=NULL)
是否有更简洁的方法通过存储的凭据从 dplyr
连接到 MySQL 数据库?
从 Hadley 对此 pull request (Feb 2014, asking to adapt code to allow reading my.cnf
) and the 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")