使用 4.1.1 之前的身份验证协议通过 R 访问 MySQL

Access to MySQL with R using a pre 4.1.1 authentication protocol

提问人:user3122861 提问时间:12/20/2013 最后编辑:Gavin Simpsonuser3122861 更新时间:11/9/2023 访问量:1223

问:

我需要访问MySQL远程服务器,我想使用R软件执行此操作。

我设置了连接参数,但无法访问。我使用以下代码:

drv <- dbDriver("MySQL")
library(RMySQL)
# open the connection using user, passsword, etc., as
con <- dbConnect(MySQL(), user="user", password="psw",
dbname="NameDB", host="webhosting", port=3306)

我收到这个错误:

Error in mysqlNewConnection(drv, ...) : 
RS-DBI driver: (Failed to connect to database: Error: Connection using old (pre-4.1.1)
authentication protocol refused (client option 'secure_auth' enabled)

我尝试使用MySQL工作台连接到数据库,仅当我选择“使用旧的身份验证协议”选项时,它才能正常工作。 因此,我知道这是我需要在我的连接中激活的内容,也使用 R。但是,我不知道该怎么做!我试图禁用“secure_auth”,但 dbConnect 没有该参数。

如何更改授权?提前致谢!

P.s.:我无法升级服务器密码以使其与4.1.1之后的协议兼容。

MySQL 数据库 R 绘图 协议

评论

0赞 marbel 12/21/2013
你不需要服务器的ip来连接吗?这是我一直在使用和工作的,但服务器在本地局域网中。所以我不知道它是否对你有帮助。con <- dbConnect("MySQL", user = "username", dbname = "DatabaseName", host = "192.168.1.4", password = "yourpassword")

答:

0赞 atomic77 6/22/2016 #1

您可能想尝试使用RJDBC连接到MySQL - 它将在后台与JDBC驱动程序连接,这显然将允许旧式身份验证

0赞 user17714926 12/21/2021 #2

根据数据库的大小,您可以使用 MySQL Workbench 将远程数据库克隆到本地数据库。然后它只是一个本地连接,您可以禁用/控制其身份验证。

0赞 user22851124 11/9/2023 #3

要使用 4.1.1 之前的身份验证协议通过 R 连接到 MySQL,您需要向名为 的函数添加一个参数。此参数应设置为 TRUE 以启用旧的身份验证协议。dbConnect()useLegacyAuth

drv <- dbDriver("MySQL")
library(RMySQL)
# open the connection using user, password, etc., as
con <- dbConnect(MySQL(), user="user", password="psw",
dbname="NameDB", host="webhosting", port=3306, useLegacyAuth=TRUE)