【问题标题】:Connecting to database when hosting shiny app on shinyapps.io in R在 R 中的 shinyapps.io 上托管闪亮的应用程序时连接到数据库
【发布时间】:2018-04-08 14:43:37
【问题描述】:

我正在为我的公司创建一个闪亮的应用程序,我想将它托管在 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"
)

当然这适用于连接。

【问题讨论】:

  • 通过 ssh 进行身份验证是一个不错的选择。您应该阅读this 线程以获得一些指导。

标签: r shiny


【解决方案1】:

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

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

如果您想保持代码原样,您应该登录托管 RSConnect 的服务器并创建文件 /home/rstudio-connect/.my.cnf 并使其对用户 rstudio-connect 可读

【讨论】:

    猜你喜欢
    • 2019-06-23
    • 2020-07-02
    • 2017-02-11
    • 2018-10-19
    • 2017-09-05
    • 2019-04-24
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多