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
.