web-dev-qa-db-fra.com

Accès Rails et Mysql2 refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: NO)

Je suis un peu nouveau chez Rails, et une grande partie de mon expérience implique que je sente comment résoudre le problème, aussi je m'excuse d'avance si j'ai raté une solution évidente. Je lance une machine Windows.

Je crée une connexion et un enregistrement en utilisant mysql2. Le programme d’installation de MySQL a déjà été utilisé pour installer le serveur, le plan de travail, etc. (j’ai configuré le mot de passe root comme mot de passe) et j’ai déjà installé le gem mysql2.

Les Rails ont été regroupés avec succès, mais lorsque j'ai entré rake db:create, l'erreur Access denied for user 'root'@'localhost' (using password: NO) s'est produite.

Rails m'a alors demandé mon mot de passe, je l'ai entré mais l'erreur s'est produite à nouveau. Après avoir saisi mon mot de passe une deuxième fois, il semblait que cela fonctionnait bien jusqu'à ce que j'essaye de créer un Rails db:migrate dans lequel l'erreur est à nouveau apparue, rendant impossible la migration.

Cela me rend perplexe car dans la requête MySQL, mon mot de passe est défini comme identique à celui que j'ai entré. J'ai essayé de donner à l'utilisateur 'root' tous les privilèges du schéma, mais cela ne faisait aucune différence. S'il vous plaît dites-moi comment résoudre ce problème et merci.

Si vous avez des questions sur ma question, s'il vous plaît demander.

13
spongezh22

pour moi aidé

$ mysql -u root -p

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

et dans database.yml

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

grâce à @ spongezh22

19
zombie_ghast

semble que votre utilisateur ne peut pas se connecter à la base de données mysql, essayez cette commande dans votre console

mysql -u root -p

et à l'invite, donnez le mot de passe en tant qu'admin

si cela est possible, alors vous devriez être prêt à partir

Et votre fichier de base de données yml devrait être comme

development:
 adapter: mysql2
 database: mydb
 Host: localhost
 username: root
 password: mypass
8
Bharat soni

Je viens de copier et coller ce qui précède (ci-dessous) dans mon fichier yml Rails et cela a fonctionné!

development:
adapter: mysql2
database: mydb
Host: localhost
username: root
password: mypass
1
macjeans

Mon problème était dû au mot de passe commençant par "!". Changer mon mot de passe dans mysql et database.yml me l'a résolu.

0
ltondeleir

Essayez de créer votre base de données test également, c’est pourquoi vous obtenez le message d’erreur si vous ne définissez pas correctement vos informations d’identification de la base de données test telles que (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
0
Michael Chemani

Pas une réponse de Rails, mais pour les autres qui se présentent ici: 

Si vous transmettez vos informations d'identification, par exemple un fichier ENV à un script autonome, assurez-vous de ne pas avoir de caractères invisibles comme un "\ n" à la fin de votre mot de passe. Ça va vraiment foirer avec vous. 

0
flickerfly

Exécuter ./bin/spring stop corrigé pour moi. Je l'ai trouvé dans un Github, mais je ne me souviens plus où.

0
Igorzovisk

Ce fut l’une des rares occasions où j’ai dû redémarrer le serveur Rails après avoir modifié le fichier database.yml. Après avoir défini le mot de passe dans le fichier, je devais redémarrer le serveur Rails. Après cela, l'erreur est partie.

0
Odysseus Ithaca