在R的shinyapps.io上托管闪亮的应用程序时连接到数据库

时间:2017-10-27 04:24:59

标签: r shiny

我正在为我的公司创建一个闪亮的应用程序,我想在shinyapps.io上主持。该应用程序需要从我公司的数据库中获取数据,我可以在自己的计算机上查询。但是,我没有将用户名和密码直接放入我的代码中,而是将用户名和密码保存到存储在我的主目录中的.my.cnf文件中。在我的应用程序中,我按以下方式连接:

rmysql.settingsfile <- "~/.my.cnf"
rmysql.db1 <- "dbname"
drv <- dbDriver("MySQL")

mydb_connected <- dbConnect(drv, default.file = rmysql.settingsfile, group = rmysql.db1, user = NULL, password = NULL)

这将我连接到数据库。

所有这些代码都位于我的app.R闪亮应用文件的顶部。不幸的是,在我使用rsconnect :: deployApp()部署应用程序后,虽然上传成功,但应用程序实际上并未运行,并且我在shinyapps.io帐户日志中收到以下错误:

Warning: Error in .local: mysql default file ~/.my.cnf does not exist

我可以通过将用户名和密码放入我的脚本来解决此错误,但我的公司不希望我这样做。还有其他方法可以解决这个问题吗?

谢谢!

编辑 - 据说我不允许连接的方式,即使它有效,但因为密码在代码中,就像这样:

mydb_connected <- dbConnect(

 MySQL(),
  user="admin-read",
  dbname="dbname",
  host="myhost",
  password="mypass"
)

当然这适用于连接。

1 个答案:

答案 0 :(得分:1)

除非您在RunAs上使用RSConnect选项,否则运行已部署应用程序的用户为rstudio-connect

然后它找不到~/.my.cnf文件。

如果您希望保持代码不变,则应该登录托管RSConnect的服务器并创建文件/home/rstudio-connect/.my.cnf并使其对用户rstudio-connect

可读