ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)

199

Je suis un ingénieur électricien qui joue principalement avec les systèmes d'alimentation au lieu de la programmation. Récemment, j'ai suivi un manuel pour installer une suite logicielle sur Ubuntu. Je n'en ai aucune connaissance mySQL, en fait. J'ai effectué les installations suivantes sur mon Ubuntu.

sudo apt-get update
sudo apt-get install mysql-server-5.5
sudo apt-get install mysql-client-5.5
sudo apt-get install mysql-common
sudo apt-get install glade
sudo apt-get install ntp

Alors je fais

me@ubuntu:~/Desktop/iPDC-v1.3.1/DBServer-1.1$ mysql -uroot -proot <"Db.sql"

J'ai fini avec le message d'erreur suivant.

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Comment puis-je résoudre ce problème et continuer?

Jeu Sibbs
la source
1
Cela ne me semble pas être strictement lié à la programmation . Je l'ai signalé pour migration vers SuperUser
Uli Köhler
1
Futurs visiteurs, n'oubliez pas non plus de vérifier les différentes causes expliquées ici: dev.mysql.com/doc/refman/8.0/en/problems-connecting.html
aderchox

Réponses:

167

Remarque: pour MySQL 5.7+, veuillez consulter la réponse de @Lahiru à cette question. Cela contient des informations plus récentes.

Pour MySQL <5.7:

Le mot de passe root par défaut est vide (c'est-à-dire une chaîne vide) non root. Vous pouvez donc simplement vous connecter en tant que:

mysql -u root

Vous devez évidemment changer votre mot de passe root après l'installation

mysqladmin -u root password [newpassword]

Dans la plupart des cas, vous devez également configurer des comptes d'utilisateurs individuels avant de travailler également de manière approfondie avec la base de données.

Mike Brant
la source
5
@FarticlePilter L' -pindicateur spécifie le mot de passe, donc après avoir changé votre mot de passe root, vous aimeriez mysql -u root -p[newpassword]. Le < [filename]utilise l'entrée std pour exécuter un fichier SQL au chemin indiqué via les informations d'identification utilisateur que vous fournissez.
Mike Brant
33
J'ai essayé comme dit mysqladmin -u root password abc1234, mais j'ai réussi mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'root'@'localhost' (using password: NO)'. Merci beaucoup!
Sibbs Gambling
2
@Kanagaroo dans cette question, l'OP indique qu'ils viennent d'installer MySQL pour la première fois, puis ont essayé d'accéder via le client de ligne de commande MySQL. Cela ressemble à un premier accès à moi.
Mike Brant
18
En fait, pour le serveur de communauté mysql 5.7, le mot de passe root par défaut est généré aléatoirement lors de l'installation. Vérifiez votre /var/log/mysqld.log pour une ligne parlant d'un "mot de passe temporaire". Économise des heures de déconner.
Phil
1
@BraianMellor Cela résout le problème pour MySQL <5.7 en ce que le mot de passe root par défaut (post-installation) sur Ubuntu est vide (pas de mot de passe), là où dans la question d'origine, l'auteur essayait d'utiliser root / root. La question ne concernait pas la perte de mot de passe, la modification du mot de passe ou similaire. Pour les versions plus récentes de MySQL, l'autre réponse que j'ai référencée est la bonne, car un utilisateur doit regarder dans les journaux d'erreurs pour voir le mot de passe root généré de manière aléatoire.
Mike Brant
115

J'ai pu résoudre ce problème en exécutant cette instruction

sudo dpkg-reconfigure mysql-server-5.5

Ce qui changera le mot de passe root.

Divz
la source
11
Juste ce dont j'avais besoin ... mais tout le monde n'a pas la version 5.5 du serveur. utiliser dpkg --get-selections | grep sqlpour obtenir votre version
Balmipour
1
@Balmipour quelle devrait être la commande équivalente pour vérifier la version sql dans Rhel 6.x
PrathamN
1
@Divz quelle devrait être la commande pour reconfigurer le serveur mysql dans Rhel / centos
PrathamN
@PrathamN Je n'ai jamais utilisé de red had, mais googler pour les "versions des packages de vérification de chapeau rouge" me donne des commandes comme celle-ci: yum list installedajouter | grep sqlpour filtrer uniquement les packages SQL.
Balmipour du
1
Quand je lance cette commande sous Mac OS X, je reçois cette erreur: sudo: dpkg-reconfigure: command not found. Toute suggestion?
mOna
96

Vous devez réinitialiser le mot de passe! étapes pour mac osx (testé et fonctionnel) et ubuntu

Arrêtez MySQL en utilisant

sudo service mysql stop

ou

$ sudo /usr/local/mysql/support-files/mysql.server stop

Démarrez-le en mode sans échec:

$ sudo mysqld_safe --skip-grant-tables --skip-networking

(au-dessus de la ligne se trouve la commande entière)

Ce sera une commande en cours jusqu'à ce que le processus soit terminé, alors ouvrez une autre fenêtre shell / terminal, connectez-vous sans mot de passe:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Selon le commentaire de @ IberoMedia, pour les versions plus récentes de MySQL, le champ est appelé authentication_string:

mysql> UPDATE mysql.user SET authentication_string =PASSWORD('password') WHERE User='root';

Démarrez MySQL en utilisant:

sudo service mysql start

ou

sudo /usr/local/mysql/support-files/mysql.server start

votre nouveau mot de passe est «mot de passe».

REMARQUE: pour la version de mysql> 5.7, essayez ceci:

update mysql.user set authentication_string='password' where user='root';
tk_
la source
3
S'il vous plaît, PAS de cette façon! La réponse de @ Divz est plus sûre. Citant la documentation à propos de --skip-grant-tables: Ceci permet à n'importe qui de se connecter sans mot de passe et avec tous les privilèges [...] Parce que ceci n'est pas sécurisé, [...] utilisez --skip-grant-tablesen conjonction avec --skip-networkingpour empêcher les clients distants de se connecter. oh, et aussi, celui-ci n'a pas fonctionné pour moi. C'est pourquoi je suis venu ici: p
Balmipour
1
Si vous allez dans cette direction , oui. Cela n'a pas fonctionné pour moi, et suivre la réponse de @ Divz me semble beaucoup plus facile, de toute façon --Ce que je suggérerais est d'utiliser dpkg --get-selections | grep mysql-server-pour obtenir votre version exacte de MySQL, puis optez pour sudo dpkg-reconfigure mysql-server-5.x (remplacez 5 .x avec la version de votre serveur, btw). J'ai commenté la réponse de @ Divz avec cette précision, mais elle est masquée par les nombreux commentaires "merci".
Balmipour
4
mettre à jour le jeu d'utilisateur authentication_string = password ('1111') où user = 'root';
Dejell
2
Cela a fonctionné en fait ... les autres solutions m'ont toujours donné la même erreur.
eddy147
2
Depuis MySQL 5.7.6, la colonne Password a été renommée "authentication_string". Ici vous pouvez en savoir plus: bugs.mysql.com/bug.php?id=76655
IberoMedia
62

Je sais que c'est une vieille question mais je pense que cela pourrait aider quelqu'un. J'ai récemment été confronté au même problème mais dans mon cas, je me souviens très bien de mon mot de passe mais il a continué à me donner la même erreur. J'ai essayé tellement de solutions mais toujours aucune n'a aidé alors j'ai essayé ceci

mysql -u root -p 

après quoi il vous demande un mot de passe comme celui-ci

Enter password: 

puis j'ai tapé le mot de passe que j'ai utilisé. C'est tout

XY-JOE
la source
3
C'est drôle que cela ait aidé après des jours de recherche.
girish_vr
Bon à savoir @girish_vr
XY-JOE
A travaillé pour moi! Ma version du serveur mysql est: Version du serveur: 8.0.13 MySQL Community Server - GPL
kaspiotr
Celui-ci a aidé, ce qui est tellement incroyablement stupide du côté de MySQL que je n'arrive toujours pas à y croire.
wscourge
41

Au démarrage initial du serveur, les événements suivants se produisent, étant donné que le répertoire de données du serveur est vide:

  • Le serveur est initialisé.
  • Le certificat SSL et les fichiers de clés sont générés dans le répertoire de données.
  • Le plugin validate_password est installé et activé.
  • Le compte superutilisateur 'root' @ 'localhost' est créé. Le mot de passe du superutilisateur est défini et stocké dans le fichier journal des erreurs.

Pour le révéler, utilisez la commande suivante:

shell> sudo grep 'temporary password' /var/log/mysqld.log

Modifiez le mot de passe root dès que possible en vous connectant avec le mot de passe temporaire généré et définissez un mot de passe personnalisé pour le compte de superutilisateur:

shell> mysql -u root -p #Login to root user with some password

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 
Lahiru
la source
17
Cela semblait prometteur, mais cela ne fonctionne pas pour moi. Quand je cours, sudo grep 'temporary password' /var/log/mysqld.logje reçois/var/log/mysqld.log: No such file or directory
Eric Hepperle - CodeSlayer2010
6
Essayez sudo grep 'temporary password' /var/log/mysql/error.log. La solution @Lahiru a fonctionné pour moi.
artemisian le
17
J'ai essayé sudo grep 'mot de passe temporaire' /var/log/mysql/error.log mais il ne renvoie rien.
apprenant
2
Essayez shell> sudo grep 'password' /var/log/mysql/error.log. Cela a fonctionné pour moi, mais j'obtiens: root @ localhost est créé avec un mot de passe vide! Veuillez envisager de désactiver l'option --initialize-insecure. Ma version mysql est: Ver 8.0.13 pour Linux sur x86_64 (MySQL Community Server - GPL)
kaspiotr
2
@EnginYilmaz pourquoi suggérez-vous une commande mysql alors que le problème est que mysql n'est même pas accessible?
R-obert
34

si le problème persiste, essayez de forcer le changement de passe

/etc/init.d/mysql stop

mysqld_safe --skip-grant-tables &

mysql -u root

Configurer le nouveau mot de passe de l'utilisateur root MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Arrêtez MySQL Server:

/etc/init.d/mysql stop

Démarrez le serveur MySQL et testez-le:

mysql -u root -p
Yasin Hassanien
la source
1
Merci. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)sévissait également sur mon serveur. 'mysqld_safe' a également échoué jusqu'à ce que je fasse un 'killall mysqld' APRÈS votre étape 1.
Marcos
S'il vous plaît, PAS de cette façon! La réponse de @ Divz est plus sûre. Citant la documentation sur --skip-grant-tables: Cela permet à n'importe qui de se connecter sans mot de passe et avec tous les privilèges [...] Parce que ceci n'est pas sécurisé, [...] utilisez --skip-grant-tablesen conjonction avec --skip-networkingpour empêcher les clients distants de se connecter. oh, et aussi, celui-ci n'a pas fonctionné pour moi. C'est pourquoi je suis venu ici: p
Balmipour
2
Cela me donne: ERREUR 1054 (42S22): Colonne inconnue «mot de passe» dans «liste des champs»
MD. Mohiuddin Ahmed
Vérifiez la réponse de @Anshu, c'est un moyen plus sûr de gérer cela
Mugoma J. Okomba
1
@ MD.MohiuddinAhmed Vous devez utiliser une version plus récente de mysql-server. Référez-vous à cette réponse: stackoverflow.com/a/31122246/6242649
Udayraj Deshmukh
34

Cela se produit lorsque votre mot de passe est manquant.

Étapes pour changer le mot de passe lorsque vous avez oublié:

  1. Arrêtez MySQL Server (sous Linux):

    sudo systemctl stop mysql
    
  2. Démarrez la base de données sans charger les tables d'octroi ni activer la mise en réseau:

    sudo mysqld_safe --skip-grant-tables --skip-networking &
    

    L'esperluette à la fin de cette commande fera que ce processus s'exécute en
    arrière - plan afin que vous puissiez continuer à utiliser votre terminal et exécuter #mysql -u root, il ne vous demandera pas de mot de passe.

    Si vous obtenez une erreur comme ci-dessous:

    2018-02-12T08: 57: 39.826071Z mysqld_safe Le répertoire '/ var / run / mysqld' pour le
    fichier socket UNIX n'existe pas. mysql -u root ERROR 2002 (HY000): Impossible de se connecter au serveur MySQL local via le socket
    '/var/run/mysqld/mysqld.sock' (2) [1] + Quitter 1

  3. Créez un répertoire de services MySQL.

    sudo mkdir /var/run/mysqld
    

    Donnez à l'utilisateur MySQL l'autorisation d'écrire dans le répertoire de service.

    sudo chown mysql: /var/run/mysqld
    
  4. Exécutez la même commande à l'étape 2 pour exécuter mysql en arrière-plan.

  5. Exécutez mysql -u root, vous obtiendrez la console mysql sans entrer de mot de passe.

    Exécutez ces commandes

    FLUSH PRIVILEGES;
    

    Pour MySQL 5.7.6 et plus récent

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

    Pour MySQL 5.7.5 et versions antérieures

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
    

    Si la commande ALTER USER ne fonctionne pas, utilisez:

    UPDATE mysql.user SET authentication_string = PASSWORD('new_password')     WHERE User = 'root' AND Host = 'localhost';
    

Maintenant quitte

  1. Pour arrêter l'instance démarrée manuellement

    sudo kill `cat /var/run/mysqld/mysqld.pid`
    
  2. Redémarrez mysql

    sudo systemctl start mysql
    
Sameer Kumar Choudhary
la source
2
Dans mon cas, je dois modifier le Step 6 commesudo kill `sudo cat /var/run/mysqld/mysqld.pid`
kolunar
1
C'est celui qui a fonctionné pour moi. À l'étape 5, faites 1. utilisez USER 2. Pour modifier le mot de passe, utilisez -> mettez à jour l'utilisateur set authentication_string = PASSWORD ("password") où User = 'root';
Jivan Bhandari
1
C'est la meilleure solution, je pourrais trouver. Utilisation de "5.7.26 MySQL Community Server (GPL)" sur macOS Mojave sur un modèle MBP '15. J'ai dû arrêter Mysql de System Preference, puis j'ai suivi les étapes 2 et 5. Et puis j'ai dû tuer le processus MySQL en recherchant le PID en utilisant ps -ef | grep mysql.
cspider
Après des heures et des jours à me frapper la tête à ce sujet et trop paresseux pour trouver la cause de l'erreur à l'étape 2. Merci beaucoup pour cette réponse. Enfin, je peux voir mysql -u root -ptravailler avec mon nouveau mot de passe
Urvah Shabbir
13

J'utilise Ubuntu-16.04: mysql installé - 5.7. J'ai eu le même problème: connexion refusée pour l'utilisateur root.

J'ai essayé les étapes ci-dessous:

  1. dpkg --get-selections | grep mysql (pour obtenir la version de mysql).

  2. dpkg-reconfigure mysql-server-5.7

  3. mysql -u root -p

Sans -p, cela ne vous invite pas à demander le mot de passe. Une fois que vous y êtes, vous pouvez créer un utilisateur avec un mot de passe en suivant les étapes:

CREATE USER 'your_new_username'@'your-hostname' IDENTIFIED BY 'your-password';

GRANT ALL PRIVILEGES ON *.* to 'your_new_username'@'your-hostname' WITH GRANT OPTION;

Quittez la racine et connectez-vous à partir de celui que vous avez indiqué ci-dessus.

mysql -u <your_new_username> -p

Pour une raison quelconque, le simple fait de taper mysql ne fonctionne pas. DU TOUT. Je suggère d'en faire une habitude à utiliser mysql -u <name> -p.

Nikhil Rushmith
la source
12

Je suis tombé sur ce problème très ennuyeux et j'ai trouvé de nombreuses réponses qui n'ont pas fonctionné. La meilleure solution que j'ai trouvée était de désinstaller complètement mysql et de le réinstaller. Lors de la réinstallation, vous avez défini un mot de passe root et cela a résolu le problème.


sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

J'ai trouvé ce code ailleurs, donc je ne m'en félicite pas. Mais ça marche. Pour installer mysql après l'avoir désinstallé, je pense que Digital Ocean a un bon tutoriel à ce sujet. Vérifiez mon essentiel pour cela.
https://gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096

JamesD
la source
12

Si aucune des autres réponses ne fonctionne pour vous et que vous avez reçu cette erreur:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
[1]+  Exit 1                  sudo mysqld_safe --skip-grant-tables

Suivez les commandes ci-dessous étape par étape jusqu'à ce que vous réinitialisiez votre mot de passe:

# Stop Your Server First
sudo service mysql stop

# Make MySQL service directory.
sudo mkdir /var/run/mysqld

# Give MySQL permission to work with the created directory
sudo chown mysql: /var/run/mysqld

# Start MySQL, without permission and network checking
sudo mysqld_safe --skip-grant-tables --skip-networking &

# Log in to your server without any password.
mysql -u root mysql


# Update the password for the root user:
UPDATE mysql.user SET authentication_string=PASSWORD('YourNewPasswordBuddy'), plugin='mysql_native_password' WHERE User='root' AND Host='localhost';

#if you omit (AND Host='localhost') section, it updates the root pass regardless of its host

FLUSH PRIVILEGES;
EXIT;

#kill mysqld_safe process
sudo service mysql restart

#Now you can use your new password to login to your Server
mysql -u root -p

#take note for remote access you should create a remote user and then grant all privileges to that remote user
Mehdi
la source
1
C'est également la bonne réponse pour mysql 5.7 dans Ubuntu 18.04 LTS. Merci
Dhiraj
Pour toutes les adresses distantes: sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf -> bind-address = 0.0.0.0
Mehdi
9

entrez simplement dans le terminal

mysql -u racine -p. qu'il vous demandera le mot de passe

Vahap Gencdal
la source
8

J'ai installé MySQL en tant qu'utilisateur root ( $SUDO) et j'ai eu ce même problème
Voici comment je l'ai résolu -

  1. $ sudo cat /etc/mysql/debian.cnf

Cela montrera les détails comme-

# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint password = GUx0RblkD3sPhHL5 socket = /var/run/mysqld/mysqld.sock

Ci-dessus, nous pouvons voir le mot de passe que nous allons utiliser(GUx0RblkD3sPhHL5) dans l'invite-

  1. mysql -u debian-sys-maint -p Enter password:
    maintenant fournir le mot de passe ( GUx0RblkD3sPhHL5 ).

  2. Maintenant à exitpartir de MySQL et connectez-vous à nouveau en tant que-

    mysql -u root -p Enter password:
    Maintenant, fournissez un nouveau mot de passe. C'est tout, nous avons un nouveau mot de passe pour d'autres utilisations.

Cela a fonctionné pour moi, j'espère vous aider aussi!

S.Yadav
la source
7

Veuillez lire la documentation officielle: Mysql: Comment réinitialiser le mot de passe root

Si vous avez accès au terminal:

MySQL 5.7.6 et versions ultérieures:

$ mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 et versions antérieures:

$ mysql
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
d.danailov
la source
1
Donne: ERREUR 1131 (42000): Vous utilisez MySQL en tant qu'utilisateur anonyme et les utilisateurs anonymes ne sont pas autorisés à changer de mot de passe
MD. Mohiuddin Ahmed
1
C'est normal. Votre utilisateur est anonyme. Vous devez exécuter> mysql -u {your_username}
d.danailov
3

J'utilise mysql-5.7.12-osx10.11-x86_64.dmg sous Mac OSX

Le processus d'installation configure automatiquement un mot de passe temporaire pour l'utilisateur root. Vous devez enregistrer le mot de passe. Le mot de passe ne peut pas être récupéré.

Suivez les instructions

  1. Aller à cd /usr/local/mysql/bin/
  2. Entrez le mot de passe temporaire (qui ressemblerait à quelque chose comme "tsO07JF1 => 3")
  3. Vous devriez obtenir l'invite mysql>.
  4. Exécutez, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');si vous souhaitez définir votre mot de passe: "root" alors la commande serait,SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
  5. Courir ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
  6. Courir exit
  7. Courir ./mysql -u root -p
  8. Tapez votre mot de passe. Dans mon cas, je taperais "root" (sans guillemets)
  9. C'est tout.

Pour plus de commodité, vous devez ajouter "/usr/local/mysql/bin"à votre PATH

Maintenant, de n'importe où, vous pouvez taper ./mysql -u root -ppuis taper le mot de passe et vous obtiendrez l'invite mysql>.

J'espère que cela aide.

tausiq
la source
3

La réponse peut sembler idiote, mais après avoir perdu des heures, c'est comme ça que je l'ai fait fonctionner

mysql -u root -p

J'ai le message d'erreur

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Même si je tapais le bon mot de passe (le mot de passe temporaire que vous obtenez lors de la première installation de mysql)

J'ai bien compris lorsque j'ai tapé le mot de passe lorsque l'invite de mot de passe clignotait

Amit Kumar
la source
2

si le problème persiste, essayez de forcer le changement de passe

Arrêtez MySQL Server (sous Linux):

/etc/init.d/mysql stop

Arrêtez MySQL Server (sur Mac OS X):

mysql.server stop

Démarrez le démon mysqld_safe avec --skip-grant-tables

mysqld_safe --skip-grant-tables &
mysql -u root

Configurer le nouveau mot de passe de l'utilisateur root MySQL

use mysql;
update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
flush privileges;
quit;

Arrêtez MySQL Server (sous Linux):

/etc/init.d/mysql stop

Arrêtez MySQL Server (sur Mac OS X):

mysql.server stop

Démarrez le service serveur MySQL et testez la connexion par root:

mysql -u root -p
Max Yao
la source
2

Si vous avez MySQL dans le cadre d'une image Docker (par exemple sur le port 6606) et une installation Ubuntu (sur le port 3306), la spécification du port ne suffit pas:

mysql -u root -p -P 6606

lancera:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

comme il essaie de se connecter à localhost par défaut, la spécification de votre adresse IP locale résout le problème:

mysql -u root -p -P 6606 -h 127.0.0.1
botris
la source
1

Par défaut, le mot de passe sera nul, vous devez donc changer le mot de passe en suivant les étapes ci-dessous.

se connecter à mysql

root # mysql

Utilisez mysql

mysql> update user set password = PASSWORD ('root') where User = 'root'; Enfin, rechargez les privilèges:

mysql> privilèges de vidage; mysql> quitter

Rizwan Basheer
la source
1

Juste une ligne et cela a résolu mon problème.

sudo dpkg-reconfigure mysql-server-5.5
Satyendra Sahani
la source
1

Dans Ubuntu 16.04 (MySQL version 5.7.13), j'ai pu résoudre le problème avec les étapes ci-dessous:

  1. Suivez les instructions de la section B.5.3.2.2 Réinitialisation du mot de passe racine: Unix et Unix-like Systems Manuel de référence MySQL 5.7

  2. Quand j'ai essayé #sudo mysqld_safe --init-file = / home / me / mysql-init et cela a échoué. L'erreur était dans /var/log/mysql/error.log

    2016-08-10T11: 41: 20.421946Z 0 [Note] L'exécution du fichier_init '/ home / me / mysql / mysql-init' a démarré. 2016-08-10T11: 41: 20.422070Z 0 [ERREUR] / usr / sbin / mysqld: Fichier '/ home / me / mysql / mysql-init' introuvable (Errcode: 13 - Autorisation refusée) 2016-08-10T11: 41: 20.422096Z 0 [ERROR] Annulation

La permission de fichier de mysql-init n'était pas le problème, besoin de modifier l'autorisation apparmor

  1. Édité par #sudo vi /etc/apparmor.d/usr.sbin.mysqld

    ....
      /var/log/mysql/ r,
      /var/log/mysql/** rw,
    
    
    # Allow user init file
      /home/pranab/mysql/* r,
    
      # Site-specific additions and overrides. See local/README for details.
      #include <local/usr.sbin.mysqld>
    }
    
  2. Faire #sudo /etc/init.d/apparmor recharger

  3. Redémarrez mysqld_safe, essayez l'étape 2 ci-dessus. Vérifiez /var/log/mysql/error.log assurez-vous qu'il n'y a pas d'erreur et que mysqld est démarré avec succès

  4. Exécutez #mysql -u root -p

    Entrer le mot de passe:

Entrez le mot de passe que vous avez spécifié dans mysql-init. Vous devriez pouvoir vous connecter en tant que root maintenant.

  1. Arrêtez mysqld_safe par #sudo mysqladmin -u root -p shutdown

  2. Démarrez mysqld de manière normale en #sudo systemctl start mysql

codegen
la source
0

Dans les versions récentes de MySQL, il n'y a pas passwordde mysql.usertable.

Vous devez donc exécuter ALTER USER. Mettez cette commande d'une ligne dans le fichier.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Et exécutez-le en tant que fichier init (en tant qu'utilisateur root ou mysql)

mysqld_safe --init-file=/home/me/mysql-init &

Le serveur MySQL doit être arrêté pour démarrer mysqld_safe.

En outre, il peut y avoir un problème avec les autorisations apparmor pour charger ce fichier init. En savoir plus ici https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql

Vladimir Kovalchuk
la source
0

Si vous n'avez pas encore défini de mot de passe, exécutez mysql -uroot, cela fonctionne pour moi.

Ah bon
la source
0

Sur Mac, si vous rencontrez un problème pour vous connecter avec le premier mot de passe que vous avez reçu lors de l'installation, vous pouvez peut-être simplement tuer le processus mysql, puis essayer.

Donc: 1- exécutez la commande suivante pour trouver le PID de mysql:

ps -aef | grep mysql | grep -v grep

2- Tuez le processus:

kill -15 [process id] 

Ensuite, vous pouvez vous connecter avec le mot de passe initial en utilisant cette commande:

mysql -uroot -p

Ce qui vous demande de saisir votre mot de passe. Entrez simplement le mot de passe initial.

Maryam Zakani
la source
0

J'ai eu un problème similaire:

ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: NON)

Mais dans mon cas, la cause était vraiment idiote. J'ai copié la commande à partir d'un document Word, et le problème était qu'un trait d'union n'avait pas le code ASCII 2D mais l'Unicode E28093.

Fausse route:

mysql -u root –pxxxx

La bonne façon:

mysql -u root -pxxxx

Les deux se ressemblent mais ne sont pas identiques (essayez-le, copiez et collez en remplaçant votre mot de passe).

Face à ce type d'erreur, la recommandation est d'essayer de taper la commande au lieu de copier-coller.

césargastonec
la source
0

J'ai essayé avec la bonne réponse de @Lahiru, mais je n'ai pas fonctionné avec le serveur MySQL version 8.0.16 (Communauté) sur macOS Mojave.

En suivant les instructions de Sameer Choudhary ci-dessus et avec quelques ajustements, j'ai pu changer le mot de passe root et activer l'accès root à partir de localhost.

Mise à jour: Tous ces éléments ne sont pas nécessaires, si vous installez sur Mac OS en utilisant homebrew: "brew install mysql"

araignée
la source
0

J'ai eu ce problème avec Ubuntu 18.04 LTS et Mysql Server version 5.7.27-0ubuntu0.18.04.1 (Ubuntu).

Ma solution était (exécutée en tant que root avec sudo -i)

mysql <<-EOSQL
  use mysql;
  update user set plugin="mysql_native_password" where User='root';
  FLUSH PRIVILEGES ;
EOSQL

mysqladmin -u root password new_pw
Frank Hintsch
la source
0

J'ai aussi rencontré le même problème, ce que j'ai fait était

1) Ouvrez votre cmd

2) Accédez à C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin> (où MySQL Server 8.0 peut être différent selon le serveur que vous avez installé)

3) Ensuite, mettez la commande suivante mysql -u root -p

4) Je vais vous demander le mot de passe ... appuyez simplement sur Entrée, car parfois le mot de passe que vous avez entré lors de l'installation est changé en vide.

maintenant vous pouvez simplement accéder à la base de données

Cette solution a fonctionné pour moi sur la plate-forme Windows

Aman-D
la source
0

Alors que la réponse principale (w / mysqladmin) fonctionnait sur mac 10.15, elle ne fonctionnait pas sur ubuntu. Ensuite, j'ai essayé de nombreuses autres options, y compris un démarrage sécurisé pour mysql, aucune n'a fonctionné. Ajoutant ainsi une nouvelle réponse.

Au moins pour la version, les 5.7.28-0ubuntu0.18.04.4réponses manquaientIDENTIFIED WITH mysql_native_password . 5.7.28 est la valeur par défaut sur le LTS actuel et devrait donc être la valeur par défaut pour la plupart des nouveaux systèmes (jusqu'à la sortie de 20.04 LTS).

Trouvé: https://www.digitalocean.com/community/questions/can-t-set-root-password-mysql-server et maintenant appliqué

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';

qui fonctionne.

arntg
la source
0

L'erreur à laquelle j'ai été confrontée était

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

c'était un problème avec le port en cours d'exécution.

Par défaut, mysql est en cours d'exécution port 3306.

Vous pouvez vérifier cela en exécutant

  • dans un système 32 bits:

    sudo /opt/lampp/manager-linux.run

  • dans un système 64 bits:

    sudo /opt/lampp/manager-linux-x64.run

et cliquez sur le configurebouton

panneau de configuration xampp

Dans mon cas, le port fonctionnait sur 3307 et la commande que j'ai utilisée était

mysql -u root -p -P 3307 -h 127.0.0.1
Rochana Pathiraja
la source
-1

Dans mon cas, j'essayais de passer un commande à un conteneur. Dans ce cas, seul le premier mot a été interprété. Assurez-vous que vous n'êtes pas en cours d'exécution:

mysql

par opposition à:

mysql -uroot -ppassword schemaname

essayez peut-être de citer:

'mysql -uroot -ppassword schemaname'
Nae
la source