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

Posted

技术标签:

【中文标题】使用 4.1.1 之前的身份验证协议通过 R 访问 MySQL【英文标题】:Access to MySQL with R using a pre 4.1.1 authentication protocol 【发布时间】:2014-01-09 12:37:42 【问题描述】:

我需要访问 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 后的协议兼容。

【问题讨论】:

连接不需要服务器的ip吗?这是我一直在使用和工作的,但服务器在本地局域网中。所以不知道对你有没有帮助。 con &lt;- dbConnect("MySQL", user = "username", dbname = "DatabaseName", host = "192.168.1.4", password = "yourpassword") 【参考方案1】:

您可能想尝试使用RJDBC 连接到MySQL - 它会在后台连接到JDBC 驱动程序,这显然会允许old-style authentication。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于使用 4.1.1 之前的身份验证协议通过 R 访问 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

如何基于使用 Oauth2 协议的身份验证改进 JWT 访问令牌和刷新令牌?

远程连接Windows云服务器报错:出现身份验证错误,要求的函数不受支持

在远程访问服务器上禁止使用选定的身份验证协议 是啥意思啊

Bearer 未通过身份验证:签名验证失败

远程访问服务器上禁止使用选定的身份验证协议怎么解决

在 PHP 中访问 HTTP 身份验证用户名?