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.
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
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
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
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.
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
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.
Exécuter ./bin/spring stop
corrigé pour moi. Je l'ai trouvé dans un Github, mais je ne me souviens plus où.
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.