[英]Connecting to database when hosting shiny app on shinyapps.io in R
我正在為我的公司創建一個閃亮的應用程序,我想在 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"
)
當然這適用於連接。
除非您在RSConnect
上使用RunAs
選項, RSConnect
運行已部署應用程序的用戶是rstudio-connect
。
然后它找不到~/.my.cnf
文件。
如果您想保持代碼不變,您應該登錄托管 RSConnect 的服務器並創建文件/home/rstudio-connect/.my.cnf
並使其對用戶rstudio-connect
可讀
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.