【问题标题】:RMySQL error connecting to Mysql DatabaseRMySQL错误连接到Mysql数据库
【发布时间】:2019-04-21 23:55:22
【问题描述】:

我开始学习使用 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';

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

【问题讨论】:

  • 是的,您是否尝试过使用“mypwd”?这应该可以解决问题。
  • 不,我在“更改”我的身份验证密码之前问了我的问题。简而言之,我还没有编写“Alter user……”代码行。所以你确认我可以打开 Mysql 并编写上面的行代码?

标签: mysql r


【解决方案1】:

你的主机地址在哪里?

试试这样的代码

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

【讨论】:

  • 我正在使用“localhost”,因为这是我在创建 odbc Mysql 驱动程序时保存它的方式。
  • 然后替换host="localhost"
  • 我正在查看我的默认密码权限,我发现,我在创建 odbc 驱动程序时使用的密码不是用作“默认”密码的密码。我的意思是,当我创建 Mysql odbc 驱动程序时,我发明了“mypwd”作为密码。但是我的本地主机有一个更长(未透露)的密码。所以我的问题是:我应该在 R 中写哪个密码来打开我创建的 odbc 中的数据库?最后一个问题:为什么在 R 代码中,我不必写我的 odbc 名称而只写“Mysql”?
【解决方案2】:

好的,看来我找到了解决问题的方法。

我没有使用“dbConnect”,而是使用了“odbcConnect”。下面是我的工作代码:

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

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

此时我需要了解函数“odbcConnect”和“dbConnect”之间的区别。因为如果我不需要后者,我可以暂时忽略。也许我必须打开一个带有指向此链接的新线程。不确定 * 更喜欢我做什么。

【讨论】: