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).

  1. Во-первых, убедитесь, что вы можете хотя бы успешно войти в MySQL через терминал

    mysql -u кевин -p

  2. Затем запустите R и убедитесь, что вы можете войти напрямую с помощью dbConnect(), используя имя пользователя и пароль.

    mydb = dbConnect(drv, пользователь ='kevin', пароль = 'ilovecats', dbname = 'catnapdb', хост ='127.0.0.1', порт =3306)

  3. Отредактируйте текстовый файл mysql.cnf и в нижней части добавьте новую группу (точное имя этого файла и его местоположение будут зависеть от операционной системы и версий).

    [whiskerpatrol] пользователь = пароль kevin = хост ilovecats = порт 127.0.0.1 = 3306 база данных = catnapdb

Другие вопросы по тегам