RMySQL не работает с файлом cnf
Я пытаюсь подключиться к серверу MySQL через R, и он прекрасно работает со следующей строкой:
con <- dbConnect(MySQL(), user="user", password="password",dbname="dbname", host="localhost", port=3306)
Но я хотел бы использовать файл cnf, чтобы мой код user / 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)
)
Любые предложения, пожалуйста?
Спасибо
4 ответа
У меня была эта проблема совсем недавно. RMySQL ищет в этих файлах корневой каталог, поэтому вам нужно полностью определить местоположение файла. то есть:
rmysql.settingsfile<- "/ home / MD-Tech / mydefault.cnf" или rmysql.settingsfile <- "c: \ Users \ MD-Tech \ rfiles \ mydefault.cnf"
Две вещи могут происходить.
Файл CNF должен быть зашифрован, пароль должен сказать пароль = ****. Документация MySQL показывает, как создать файл CNF. Ниже будет работать для вашего кода для создания CNF
shell> mysql_config_editor set --login-path=test_db --host=localhost --user=user --password
нажмите ввод без ввода пароля, вам будет предложено ввести его
Во-вторых, пользователь = NULL и пароль = NULL отсутствуют, как указано в документации src_mysql.
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)
Когда вы добавите их и запустите код, вы должны быть установлены.
Что-то работает на: 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")
Да, получить эту настройку в первый раз - все равно, что тянуть кошачьи зубы! Вот что я сделал, запустив R на дроплете (Ubuntu 16.04, MySQL 5.7.16).
Во-первых, убедитесь, что вы можете хотя бы успешно войти в MySQL через терминал
mysql -u кевин -p
Затем запустите R и убедитесь, что вы можете войти напрямую с помощью dbConnect(), используя имя пользователя и пароль.
mydb = dbConnect(drv, пользователь ='kevin', пароль = 'ilovecats', dbname = 'catnapdb', хост ='127.0.0.1', порт =3306)
Отредактируйте текстовый файл mysql.cnf и в нижней части добавьте новую группу (точное имя этого файла и его местоположение будут зависеть от операционной системы и версий).
[whiskerpatrol] пользователь = пароль kevin = хост ilovecats = порт 127.0.0.1 = 3306 база данных = catnapdb