从 shinyapps.io 连接到 MySQL

Connect to MySQL from shinyapps.io

我有一个正在运行的 Shiny 应用程序,它通过 pool 查询远程 MySQL 数据库,我可以在本地计算机上 运行。

MySQL 服务器有 whitelisted shinyapps.io IP addresses.

当我将其部署到 shinyapps.io 时,出现此错误:

.全球

library(shiny)
library(DBI)
library(pool)
library(DT)

pool <- dbPool(
  drv      = RMySQL::MySQL(),
  dbname   = "gw_observatory",
  host     = "sage.metro.ucdavis.edu",
  username = "gw_observatory", 
  password = "password"
)
onStop(function() {
  poolClose(pool)
})

.服务器

shinyServer(function(input, output, session) {

  output$data_table <- renderDataTable({

    DT::datatable(pool %>% tbl("small_data") %>% collect())

  })

.ui

shinyUI(
  fluidPage(
      mainPanel(DT::dataTableOutput("data_table"))
  )
)

更新: 现在可以使用了。我的系统管理员添加了一个端口,并解决了这个问题。

对于运行这个问题的任何人,我推荐以下步骤:

  1. 确保您的 shinyapp 在本地运行
  2. 如果您在 shinyapps.io 上遇到部署错误,请确保:

    • 您的数据库已将 shinyappsio IP 地址列入白名单
    • 您的主机是外部主机,public IP 或 URL 而不是内部主机
    • 一些机构有非常严密的防火墙。尝试向您的数据库添加一个端口。

我希望这对在线的人有所帮助!

pool <- dbPool(
  drv      = RMySQL::MySQL(),
  dbname   = "some_name",
  host     = "123.45.678.901",
  username = "some_username", 
  password = "password",
  port     = 1234567
)