Ошибка RMySQL при подключении к базе данных Mysql

#mysql #r

#mysql #r

Вопрос:

Я начинаю учиться использовать MySQL и, более конкретно, я пытаюсь научиться подключаться и взаимодействовать с Access и R. Недавно я создал odbc, соединяющий Access с R. Я успешно использовал библиотеки R для ее извлечения и использования запросов sql. Поэтому я перешел на R Mysql. Здесь начинается моя проблема! После установки RODBC я установил RMySQL и попытался использовать «DBConnect». Здесь следует мой код:

 con <- dbConnect(dbDriver("MySQL"), user = "root", password = "mypwd", dbname = "mydbname")
  

где «mypwd» — это пароль, который я ввел при создании своего драйвера MySQL ODBC Unicode, а «mydbname» — это имя базы данных, к которой я подключился. Просто ради информации, я уже тестировал этот odbc, перенося таблицы из Access и Mysql. Итак, мои сомнения связаны только с соединением между Mysql и R.

Итак, давайте посмотрим на мою ошибку при запуске строки кода выше:

 Error in .local(drv, ...) : 
  Failed to connect to database: Error: Plugin caching_sha2_password could not be loaded
  

Я уже читал другие сообщения о необходимости изменения предпочитаемого плагина аутентификации.
Я нашел эту строку кода в качестве решения:

 ALTER USER user
  IDENTIFIED WITH mysql_native_password 
  BY 'password';
  

Итак …. пожалуйста, скажите мне, должен ли я изменить эту строку кода на:

 ALTER USER root
  IDENTIFIED WITH mysql_native_password 
  BY 'mypwd';
  

Это правильно? Или я полностью пропустил суть.
Извините за мой вопрос, но, как я уже сказал, я совершенно новичок. Спасибо за ваше терпение

Комментарии:

1. Да, вы пробовали использовать ‘mypwd’? Это должно устранить проблему.

2. Нет, я задал свой вопрос ПЕРЕД «изменением» моего пароля аутентификации. Короче говоря, я еще не написал строку кода «Изменить пользователя ……». Итак, вы подтверждаете, что я могу открыть Mysql и написать приведенный выше код строки?

Ответ №1:

Где ваш адрес хоста?

Попробуйте использовать код примерно так

 con <- dbConnect(dbDriver("MySQL"), host="192.100.XX.XX",db="df", user="root", password="mypwd")
  

Комментарии:

1. Я использую «localhost», поскольку именно так я его сохранил при создании драйвера odbc Mysql.

2. Затем замените host=»localhost»

3. Я просматривал свои права доступа к паролю по умолчанию и обнаружил, что пароль, который я использовал при создании своего драйвера odbc, не используется в качестве pwd по умолчанию. Я имею в виду, когда я создавал свой драйвер Mysql odbc, я сделал это, придумав «mypwd» в качестве пароля. Но у моего локального хоста более длинный (не раскрытый) пароль. Итак, мой вопрос: какой пароль я должен написать в R для открытия базы данных внутри моего созданного odbc? Последний вопрос: почему в коде R мне не нужно писать свое имя odbc, а просто «Mysql»?

Ответ №2:

Хорошо, кажется, я нашел обходной путь для моей проблемы.

Вместо использования «DBConnect» я использовал «odbcConnect». Здесь следует мой рабочий код:

 channel <- odbcConnect("Myodbcname", uid="root")
df <- sqlQuery(channel, "SELECT * from mytable", as.is = TRUE)
  

«Myodbcname» — это имя, которое я сохранил для своего имени DSN и системы DSN.
Итак, теперь я могу использовать свои sql-запросы в своей таблице и работать над этим.

На данный момент мне нужно понять разницу между функциями «odbcConnect» и «DBConnect». Потому что, если мне не нужно последнее, я могу на данный момент игнорировать. Возможно, мне нужно открыть новый поток со ссылкой на этот. Не уверен, что Stackoverflow предпочитает, чтобы я делал.