install.packages("RMySQL")
library(RMySQL)
载入需要的程辑包:DBI
library(DBI)
con <- dbConnect(MySQL(),
host='localhost',
dbname = '****',
user = '****',
password='****')
dbGetQuery(con,"SELECT * FROM your_db limit 3")
con <- dbConnect(MySQL(),host=…)
Error in .local(drv, …) :
Failed to connect to database: Error: Plugin caching_sha2_password could not be loaded: 找不到指定的模块。
报错如上。
解决方案如下:
#修改加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
#更新用户的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
#刷新权限
FLUSH PRIVILEGES;
#重置密码
#ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_password';
问题分析:
RMySQL用的密码认证方式落后了,现在8.0的mysql采用的sha2加密方式并没有更新到R包中,因此需要更改mysql的指定用户的加密方式,拿wifi举例,等于现在用户设备不支持wap2加密,只能用上一代的wap加密方式。
提高:
R语言的操作方式和其他的sql工具使用思路并无过大差别,基本可以举一反三,举例一二
#数据库操作
library(RMySQL)
#查询航班数据
findFlights <- function(){
#连接数据库
con <- dbConnect(MySQL(),
user='root',
password=123456,
host='127.0.0.1',
dbname='flightsinfo')
flightsdata <- dbGetQuery(con,
"select year,month,day,
dep_delay,arr_delay,
distance,dest
from flights")
#关闭数据库连接
dbDisconnect(con)
return (flightsdata)
}