1

使用 RPostgreSQL 包,除了将凭据硬编码到dbConnect方法中之外,还有其他方法可以连接到远程 PostgreSQL 实例吗?

据我所知,这是唯一的方法:

dbConnect(drv, host='some.com', port='5432', dbname='some-db', user='usr', password='secrecy')

当然有一种方法可以使用连接字符串或其他东西?

编辑:我的意思是引用一些文件(与源代码分开)或包含连接字符串的环境变量。有点像.pgpass在我的主目录或DATABASE_URLheroku 上。只是一些避免在源代码中包含数据库凭据的方法。

4

1 回答 1

1

至少在 Windows 上,在交互式会话中,您可以提示用户输入名称和密码winDialogString

user <- winDialogString("Enter your username", "")
pwd <- winDialogString("Enter your password", "")
dbConnect(..., user=user, password=pwd)

但是连接字符串有什么作用,而函数调用却没有呢?无论哪种方式,您仍然必须在某处硬编码您的凭据。


您还可以将凭据存储在某个文件中,并使用常用方法(readLinesscanread.table)读取它们。

### assuming dbcreds.txt contains the single line "username    password"
cred <- strsplit(readLines("dbcreds.txt"), "[[:blank:]]+")[[1]]
user <- cred[1]
pwd <- cred[2]
dbConnect(..., user=user, pass=pwd)
于 2015-04-02T18:13:34.303 回答