RMySQL错误连接到Mysql数据库

时间:2019-04-21 15:01:10

标签: mysql r

我开始学习使用MySQL,更具体地说,我正在尝试学习如何连接并使其与Access和R交互。 我最近创建了一个将Access连接到R的odbc。我成功地使用R库来检索它并使用sql查询。所以我搬到了R + Mysql。 这开始了我的问题! 安装RODBC之后,我安装了RMySQL并尝试使用“ dbConnect”。这是我的代码:

con <- dbConnect(dbDriver("MySQL"), user = "root", password = "mypwd", dbname = "mydbname")

“ mypwd”是创建MySQL ODBC Unicode驱动程序时插入的密码,“ mydbname”是我连接的数据库名称。只是为了提供信息,我已经通过从Access和Mysql传输表测试了该odbc。因此,我的疑问仅与Mysql和R之间的连接有关。

所以,让我们看看运行上面的代码行时出现的错误:

Error in .local(drv, ...) : 
  Failed to connect to database: Error: Plugin caching_sha2_password could not be loaded

我已经阅读了其他有关更改首选身份验证插件的信息。 我找到此行代码作为解决方案:

ALTER USER user
  IDENTIFIED WITH mysql_native_password 
  BY 'password';

所以....请告诉我是否应该将此代码行更改为:

ALTER USER root
  IDENTIFIED WITH mysql_native_password 
  BY 'mypwd';

对吗?还是我完全错过了重点。 对不起,我的问题是,但正如我所说,我是一个新手。感谢您的耐心等候

2 个答案:

答案 0 :(得分:0)

您的主机地址在哪里?

尝试类似这样的代码

con <- dbConnect(dbDriver("MySQL"), host="192.100.XX.XX",db="df", user="root", password="mypwd")

答案 1 :(得分:0)

好吧,看来我已经找到解决问题的方法。

我使用“ odbcConnect”代替了“ dbConnect”。这是我的工作代码:

channel <- odbcConnect("Myodbcname", uid="root")
df <- sqlQuery(channel, "SELECT * from mytable", as.is = TRUE)

“ Myodbcname”是我为DSN名称和DSN系统保存的名称。 因此,现在我可以在表上使用sql查询并对其进行处理了。

在这一点上,我需要了解函数“ odbcConnect”和“ dbConnect”之间的区别。因为如果我不需要后者,我暂时可以忽略。也许我必须打开一个新线程,并带有指向该线程的链接。不确定Stackoverflow希望我做什么。