[RUBY] Accès refusé pour user'root '@' localhost '(en utilisant le mot de passe: NON) Action corrective en cas d'erreur

Détails de l'erreur

Après avoir fait rails s, quand j'ai regardé le navigateur, l'erreur suivante s'est produite ↓

Mysql2::Error::ConnectionError Access denied for user 'root'@'localhost' (using password: NO)

en bref, Je ne peux pas y accéder car je n'ai pas de mot de passe! à propos de ça.

Comment résoudre l'erreur

Il existe deux façons de résoudre l'erreur.

  1. Écrivez solidement le mot de passe défini dans MySQL dans database.yml.
  2. Videz le mot de passe de l'utilisateur root.

Lors du développement individuel, 1 c'est bien, mais lors du développement en équipe, il est nécessaire que l'équipe partage le même mot de passe, ce qui est un peu gênant, donc cette fois nous entrerons dans les détails sur 2. Je décrirai également brièvement 1.

1. Écrivez solidement dans database.yml.

database.yml


default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: #Écrivez votre mot de passe ici
  socket: /tmp/mysql.sock

La solution la plus simple consiste à écrire le mot de passe dans la section ci-dessus. Cependant, si vous le poussez vers un système de gestion de version tel que GitHub, le mot de passe sera exposé, vous devez donc gérer le mot de passe dans le fichier .env et l'écrire dans .gitignore.

2. Videz le mot de passe de l'utilisateur root.

Démarrez MySQL.

$ mysql.server start

Connectez-vous à MySQL.

$ mysql -u root -p
Enter password: #Entrez le PW actuel

Sélectionnez la base de données que vous souhaitez utiliser.

mysql> use mysql;

Videz le mot de passe. Notez que dans MySQL 5.7.6, le nom de la colonne de mot de passe est passé de password à authentication_string.

mysql> update user set authentication_string='' where user='root';

Si le code ci-dessus fonctionne, vous verrez que vous avez effectué la modification.

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Fermez MySQL si les modifications sont réussies.

mysql> exit

Arrêtez MySQL une fois pour que les modifications prennent effet.

$ mysql.server stop

Recommencez. Je pense qu'il est normal de redémarrer sans s'arrêter.

$ mysql.server start

Et assurez-vous que vous pouvez vous connecter sans mot de passe.

$ mysql -u root

Une fois connecté, fermez à nouveau MySQL et démarrez le serveur.

$ rails s

Et quand j'ouvre le navigateur ... スクリーンショット 2020-11-05 17.05.11.png

L'erreur a été résolue avec succès. Je vous remercie pour votre travail acharné!

Site de référence

Mémorandum quotidien

Recommended Posts

Accès refusé pour user'root '@' localhost '(en utilisant le mot de passe: NON) Action corrective en cas d'erreur
Mysql2 :: Error :: ConnectionError: Accès refusé pour user'root '@' localhost '(en utilisant le mot de passe: OUI)
Accès refusé pour user'root '@' localhost '(en utilisant le mot de passe: OUI) et abandonné