SSH隧道将RMySQL与RStudio一起使用

SSH隧道将RMySQL与RStudio一起使用,mysql,r,ssh,rstudio,rmysql,Mysql,R,Ssh,Rstudio,Rmysql,我是使用Mac(OS X)的RStudio的新手 我成功地使用sequel Pro看到了类似这样的DB 我使用带有RMySQL的dbConnect和带有RStudio的DBI(下面的代码) library(DBI) library(RMySQL) con <- dbConnect(RMySQL::MySQL(), username = "username", password = "password",

我是使用Mac(OS X)的RStudio的新手

我成功地使用sequel Pro看到了类似这样的DB

我使用带有RMySQL的dbConnect和带有RStudio的DBI(下面的代码)

library(DBI)
library(RMySQL)
con <-  dbConnect(RMySQL::MySQL(), 
              username = "username",
              password = "password",
              host = "hostname-xxx.ap-northeast-1.rds.amazonaws.com",
              port = 3306, 
              dbname = "dbname"
)
所以ssh隧道就是这样使用终端的

ssh -f sshuser@xx.xxx.xx.xx -i ~/.ssh/ssh_key -L 3306:hostname-xxx.ap-northeast-1.rds.amazonaws.com:3306 -N
并成功登录

之后,为了确认,执行以下命令(在终端中),但在输入正确密码后失败

mysql -h 127.0.0.1 -p -u username dbname
带有错误代码

ERROR 1044 (42000): Access denied for user 'username'@'localhost' to database 'dbname'
(其他具有相同用户名的计算机成功登录。我不知道为什么…)

dbConnect(带有RStudio的RMySQL)也显示了上述错误

有人遇到过同样的情况吗?请告诉我该怎么办


谢谢。

这只是数据库凭据的问题。您需要在DBMS中设置一个用户,该用户有权访问您登录的数据库,然后使用该帐户+密码登录。这可能与用于登录服务器的帐户不同

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

如果这给您带来了任何麻烦,那么不要授予
所有权限
而是一次授予每个权限。这种情况很少见,但会发生,特别是对于其他数据库,如Hive。

这只是数据库凭据的问题。您需要在DBMS中设置一个用户,该用户有权访问您登录的数据库,然后使用该帐户+密码登录。这可能与用于登录服务器的帐户不同。如果是数据库凭据问题,DB的“用户名”帐户设置应该是错误的,那么“mysql-h 127.0…”命令是否会在所有终端上成功执行,或者在所有终端上都失败<代码>具有相同用户名的其他计算机成功登录。我不知道为什么..`sql-h 127.0.0.1-p password-u username dbname`在上面的错误消失,mysql命令在终端中成功执行。但是RStudio中的dbConnect发生错误:`error in.local(drv,…):无法连接到数据库:错误:无法连接到“hostname xxx.ap-northeast-1.rds.amazonaws.com”上的MySQL服务器(60)`
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
FLUSH PRIVILEGES;