如何将R连接到MySQL?无法连接到数据库:错误:无法加载插件caching_sha2_password

Phi*_*hil 4 mysql r rmysql r-dbi

我最近在计算机上安装了MySQL,并尝试将RStudio连接到MySQL。我按照书中的说明以及此处的说明进行操作。但是,无论何时使用dbConnect()src_mysql在中RStudio,我都会收到以下错误消息:

Error in .local(drv, ...) : 
  Failed to connect to database: Error: Plugin caching_sha2_password could not be loaded: The specified module could not be found
Run Code Online (Sandbox Code Playgroud)

例如,我可能会在Windows中使用命令提示符登录到MySQL

mysql -u username -p

并如下创建数据库

CREATE DATABASE myDatabase;

然后在RStudio中:

library(RMySQL)
db <- dbConnect(MySQL(), dbname = "myDatabase", user = "username", 
           password = "password", host = "localhost")
Run Code Online (Sandbox Code Playgroud)

而我的回应始终是上面列出的错误消息。

如果需要的话: sessionInfo()

R version 3.5.2 (2018-12-20)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Run Code Online (Sandbox Code Playgroud)

dan*_*ack 7

R mysql库取决于libmysqlclient / libmariadbclient。缺少的caching_sha2_password似乎表明未安装旧的mysqlclient版本或libmariadbclient。直到最近才将caching_sha2_password添加到mariadb(3.0.8)

类似于此答案的另一种方法是将mysql中的用户更改为使用其他身份验证机制:

您将用户设置回mysql_native_password:

ALTER USER 'username'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'password'
Run Code Online (Sandbox Code Playgroud)

若要将此设置为所有新创建用户的默认设置,请更改my.cnf / my.ini设置 default_authentication_plugin=mysql_native_password

  • 随着 [Ubuntu Bug 1913676](https://bugs.launchpad.net/ubuntu/+source/mariadb-10.3/+bug/1913676) 的修复,Linux 端应该可以解决所有问题(除了太旧的 Ubuntu-18.04) )。Windows R 连接到 MySQL-8.0 [仍然是一个问题](https://github.com/r-dbi/RMariaDB/issues/134#issuecomment-888730781)。 (2认同)