我正在尝试通过R连接到MySQL服务器,它与以下行完美配合:
con <- dbConnect(MySQL(), user="user", password="password",dbname="dbname", host="localhost", port=3306)
但是,我想使用cnf文件,以便我的用户/ apssword凭据不会出现在我的代码中并尝试以下操作:
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)
)
有什么建议吗?
非常感谢
答案 0 :(得分:3)
我最近遇到过这个问题。 RMySQL在根目录中查找这些文件,因此您需要完全限定文件的位置。即:
rmysql.settingsfile&LT; - &#34; /home/MD-Tech/mydefault.cnf" 要么 rmysql.settingsfile&LT; - &#34; C:\用户\ MD-技术\ rfiles \ mydefault.cnf&#34;
答案 1 :(得分:1)
可能会发生两件事。
CNF文件应加密,密码应说密码= ****。 MySQL documentation显示了如何创建CNF文件。以下内容适用于您的代码创建CNF
shell> mysql_config_editor set --login-path=test_db --host=localhost --user=user --password
按Enter键而不键入密码,系统将提示您输入
中引用的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)
当你添加这些并运行代码时,你应该设置。
答案 2 :(得分:0)
Fing of working at 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")
答案 3 :(得分:0)
呀,第一次进行这种设置可能就像拉猫一样。牙齿!这是我在Droplet上运行R时所做的(Ubuntu 16.04,MySQL 5.7.16)。
首先,确保至少通过终端
成功登录到MySQLmysql -u kevin -p
接下来,运行R并验证您是否可以使用用户名和密码直接使用dbConnect()登录
mydb = dbConnect(drv,user =&#39; kevin&#39;,password =&#39; ilovecats&#39;,dbname =&#39; catnapdb&#39;,host =&#39 ; 127.0.0.1&#39;,port = 3306)
编辑mysql.cnf文本文件,在底部添加一个新组(该文件的确切名称及其位置取决于操作系统和版本)。
<强> [whiskerpatrol] user = kevin 密码= ilovecats host = 127.0.0.1 port = 3306 database = catnapdb