我正在为我的公司创建一个闪亮的应用程序,我想在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"
)
当然这适用于连接。
答案 0 :(得分:1)
除非您在RunAs
上使用RSConnect
选项,否则运行已部署应用程序的用户为rstudio-connect
。
然后它找不到~/.my.cnf
文件。
如果您希望保持代码不变,则应该登录托管RSConnect的服务器并创建文件/home/rstudio-connect/.my.cnf
并使其对用户rstudio-connect