我是第一次写R包。它名为aactr
,位于我的GitHub:https://github.com/jasonbaik94/aactr
目前,该程序包只有一个功能,aact_connect
:
aact_connect <- function(user, password) {
drv <- DBI::dbDriver('PostgreSQL')
con <- DBI::dbConnect(drv,
dbname="aact",
host="aact-db.ctti-clinicaltrials.org",
port=5432,
user=user,
password=password)
}
我担心的是,出于隐私原因,我的软件包用户不希望在R脚本中输入用户名和密码。
有什么好的方法可以确保用户隐私?
我有一个想法:当用户键入aact_connect()
时,会弹出一个窗口,用户可以在其中输入username
和password
并按Enter键,然后进行连接。另外,对于没有用户名或密码的用户,我将输入参数init_connection = TRUE
,然后将加载此注册页面:https://aact.ctti-clinicaltrials.org/users/sign_up
我们非常欢迎其他任何建议!
答案 0 :(得分:1)
有许多方法可以安全地处理脚本中的数据库凭据。请参见下面的几个示例:
使用配置文件(例如yaml)将R安全地保存在用户的计算机上,以使R读取所需的变量。参见@Spacedman's answer。
config.yaml
db:
host : localhost
port : 5432
name : mypgdb
user : pg_useR
pwd : ***
R
library(yaml)
config = yaml.load_file("/path/to/config.yml")
dbConnect(drv, host = config$db$host, port = config$db$port,
dbname = config$db$name,
user = config$db$user, password = config$db$pwd)
使用链接到用户或系统配置文件的环境变量:
db_creds <- Sys.getenv(c("DB_HOST", "DB_PORT", "DB_NAME", "DB_USER", "DB_PWD"))
con <- DBI::dbConnect(drv,
dbname = db_creds[['DB_NAME']],
host = db_creds[['DB_HOST']],
port = db_creds[['DB_PORT,']],
user = db_creds[['DB_USER']],
password = db_creds[['DB_PWD']])
使用DSN来维护连接参数,但需要ODBC连接,该连接可以与通用odbc
程序包(与RPostgreSQL
相同的DBI系列的一部分)运行。 Postgres为大多数操作系统维护最新的odbc drivers。参见R-bloggers post。
odbc.ini
[myPG_DSN]
Driver = PostgreSQL Unicode
Database = mypg_db
Servername = localhost
UserName = pg_useR
Password = ***
R
db <- dbConnect(odbc::odbc(), "myPG_DSN")