Rails и Mysql2 Доступ запрещен для пользователя 'root' @'localhost' (с использованием пароля: НЕТ)

Я немного новичок в Rails, и большая часть моего опыта вовлекает меня в чувство, как решить проблему, поэтому я заранее извиняюсь, если упустил и понял очевидное решение. Я запустил машину Windows.

Я создаю регистрацию и регистрацию с помощью mysql2. Установщик MySQL уже был использован для установки сервера, workbench и т.д. (Я установил пароль root как пароль), и я уже установил gem mysql2.

Рельсы были успешно завершены, но когда я ввел rake db:create, произошла ошибка Access denied for user 'root'@'localhost' (using password: NO).

Затем Rails запросил у меня пароль, я ввел его, но ошибка повторилась. После ввода пароля во второй раз, казалось, что он работал нормально, пока я не попытался сделать rails db:migrate, в котором ошибка снова появилась, что не удалось выполнить миграцию.

Это меня смущает, потому что в запросе MySQL у меня установлен мой пароль как тот же, который я ввел. Я попробовал предоставить пользователю "root" все привилегии схемы, но это не имело никакого значения. Скажите, пожалуйста, как решить эту проблему и поблагодарить вас.

Если у вас есть вопросы по поводу моего вопроса, пожалуйста, спросите.

Ответ 1

для меня помогли

$ mysql -u root -p

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypassword')

и в файле databse.yml

development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: "mypassword" #I had an empty string here before

благодаря @spongezh22

Ответ 2

кажется, что ваш пользователь не может подключиться к базе данных mysql, попробуйте эти команды в консоли

mysql -u root -p

и при появлении запроса введите пароль как "admin"

если это возможно, тогда вам должно быть хорошо идти

И ваш файл yml базы данных должен выглядеть как

development:
 adapter: mysql2
 database: mydb
 host: localhost
 username: root
 password: mypass

Ответ 3

Я только что скопировал и вставил выше (внизу) в файл rails yml, и он сработал.

development:
adapter: mysql2
database: mydb
host: localhost
username: root
password: mypass

Ответ 4

На самом деле, чтобы создать вашу базу данных test, почему вы получаете сообщение об ошибке, если вы не правильно установили свои учетные данные базы данных test like (database.yml)

default: &default
    adapter: mysql2
    encoding: utf8
    database: atheneum
    pool: 5
    username: ******
    password: "******"
    host: localhost


development:
  <<: *default
  database: atheneum

test:
  <<: *default
  database: atheneum_test

Ответ 5

Это был один из немногих случаев, когда мне пришлось перезапустить сервер rails после внесения изменений в файл database.yml. После того, как я установил пароль в файле, мне пришлось перезапустить сервер rails. После этого ошибка исчезла.

Ответ 6

Запуск ./bin/spring stop для меня исправлен. Я нашел это в Github, но не могу вспомнить где.

Ответ 7

Моя проблема была связана с паролем, начинающимся с "!". Изменение моего пароля в mysql и database.yml решило это для меня.

Ответ 8

Не ответ рельсов, но для других, появляющихся здесь:

Если вы как-то передаете свои собственные учетные данные, например файл ENV, в отдельный скрипт, убедитесь, что у вас нет невидимых символов, таких как '\n' в конце вашего пароля. Это будет действительно с тобой.

Ответ 9

По совету Bhrat выше я создал мой пользователь Linux как пользователь в MySQL. гарантировано, что пользователь может подключиться от $ user, изменившего пользователя от root в базе данных yml к пользователю rake db: create works

Ответ 10

Ошибка говорила, что доступ запрещен для пользователя root. (У меня не было пароля). Моя проблема была по той причине, что я изменил порт по умолчанию 3306 на 8111. В database.yml я добавил port: 8111.