簡體   English   中英

R SSH tunnel to MySQL database via Shiny App Access Denied or Can't connect to MySQL server on '127.0.0.1'

[英]R SSH tunnel to MySQL database via Shiny App Access Denied or Can't connect to MySQL server on '127.0.0.1'

我已經瀏覽了其他帖子但沒有成功,所以我們到了。 以下代碼片段在 RStudio 中的 Windows 10 筆記本電腦上按預期運行。

library(RMySQL)
library(ssh)
library(callr)

rs <- r_session$new(wait = TRUE, wait_timeout = 3500)

rs$call(function(){
  session <- ssh::ssh_connect('<ssh-user>@<remote-ip-address>', keyfile = "<path-to-.pem-file>", verbose = FALSE)
  
  ssh::ssh_tunnel(session, port=3306, target = "127.0.0.1:3306")
})

# Connect to TRAQ DB.
Sys.sleep(1)

db-connection <- dbConnect(MySQL(), user = '<remote-user-name>', password = '<remote-password>', dbname = '<remote-database>', port=3306, host='127.0.0.1')

當 dbConnect() 具有 host='localhost' 時,該代碼段也會成功運行


我正在嘗試在 R shiny 應用程序中運行 Ubuntu 22 的虛擬機上運行該片段。 我在嘗試加載應用程序時收到以下消息

使用本地主機:

ERROR 1044 (42000): Access denied for user '<remote-user-name>'@'localhost'

使用 127.0.0.1:

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

我也收到了(115)錯誤代碼。


如果直接從 R 終端運行,則必須將代碼段修改如下才能成功。

ssh::ssh_tunnel(session, port=3306, target = "127.0.0.1:3306")

ssh::ssh_tunnel(session, port=3307, target = "127.0.0.1:3306")

db-connection <- dbConnect(MySQL(), user = '<remote-user-name>', password = '<remote-password>', dbname = '<remote-database>', port=3306, host='127.0.0.1')

db-connection <- dbConnect(MySQL(), user = '<remote-user-name>', password = '<remote-password>', dbname = '<remote-database>', port=3307, host='127.0.0.1')

如果主機設置為“localhost”或端口保留為 3306,則會顯示拒絕訪問消息。


不清楚這是由於 MySQL 差異還是操作系統差異造成的。 我不認為這是通過 SSH 連接到的遠程服務器上的問題,因為它可以在 Windows 筆記本電腦上運行。

select 用戶,主機來自 mysql.user; 檢查您的合法用戶名和主機並替換它。 另外,127.0.0.1 和 localhost 是有區別的。 您應該注意/etc/hosts 文件是否被映射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM