2

我正在尝试通过 R 连接到 MySQL 服务器,它与以下行完美配合:

con <- dbConnect(MySQL(), user="user", password="password",dbname="dbname", host="localhost", port=3306)

但是,我想使用 cnf 文件,以便我的用户/密码凭据不会出​​现在我的代码中,并尝试了以下操作:

rmysql.settingsfile<-"mydefault.cnf"
rmysql.db<-"test_db"
drv<-dbDriver("MySQL")
con<-dbConnect(drv,default.file=rmysql.settingsfile,group=rmysql.db) 

这就是我的 cnf 文件的外观:

[test_db]
user=user
password=password
database=dbname
host=localhost
port=3306

它与我当前工作目录的 R 脚本位于同一文件夹中。但是,我遇到了以下错误:

Error in mysqlNewConnection(drv, ...) : 
  RS-DBI driver: (Failed to connect to database: Error: Access denied for user 'ODBC'@'localhost' (using password: NO)
)

请问有什么建议吗?

非常感谢

4

4 回答 4

3

我最近遇到了这个问题。RMySQL 在根目录中查找这些文件,因此您需要完全限定文件的位置。IE:

rmysql.settingsfile<-"/home/MD-Tech/mydefault.cnf" 或 rmysql.settingsfile<-"c:\Users\MD-Tech\rfiles\mydefault.cnf"

于 2015-01-14T14:57:12.283 回答
1

可能会发生两件事。

CNF 文件应加密,密码应为密码 = ****。MySQL 文档展示了如何创建 CNF 文件。下面将适用于您的代码来创建 CNF

shell> mysql_config_editor set --login-path=test_db --host=localhost --user=user --password

不输入密码直接回车,会提示输入

第二件事是src_mysql 文档中引用的 user = NULL 和 password = NULL 缺失

rmysql.settingsfile <- "~/.mylogin.cnf"
rmysql.db <- "test_db"
drv <- dbDriver("MySQL")
con <- dbConnect(drv, default.file = rmysql.settingsfile, group = rmysql.db, user = NULL, password = NULL)

当您添加这些并运行代码时,您应该进行设置。

于 2016-07-08T04:48:46.637 回答
0

是啊,第一次得到这个设置就像拔猫的牙齿一样!这是我在 Droplet(Ubuntu 16.04,MySQL 5.7.16)上运行 R 时所做的。

  1. 首先,确保您至少可以通过终端成功登录 MySQL

    mysql -u 凯文 -p

  2. 接下来,运行 R 并验证您是否可以使用用户名和密码直接使用 dbConnect() 登录

    mydb = dbConnect(drv, user='kevin', password='ilovecats', dbname='catnapdb', host='127.0.0.1', port=3306)

  3. 编辑您的 mysql.cnf 文本文件并在底部添加一个新组(此文件的确切名称及其位置取决于操作系统和版本)。

    [whiskerpatrol] 用户=kevin 密码=ilovecats 主机=127.0.0.1 端口=3306 数据库=catnapdb

于 2016-12-12T05:16:33.213 回答
0

在以下位置找到一些工作:https ://www.r-bloggers.com/mysql-and-r/

Not in configuration file... but work.


con <- dbConnect(MySQL(),
     user="me", password="nuts2u",
     dbname="my_db", host="localhost")
于 2016-09-27T13:27:32.203 回答