#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 предпочитает, чтобы я делал.