Je suis un ingénieur en électricité qui joue principalement avec le système d'alimentation au lieu de programmer. Récemment, je suivais un manuel pour installer une suite logicielle sur Ubuntu. Je n'ai aucune connaissance sur mySQL
du tout, 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 le réparer et continuer?
Note: Pour MySQL 5.7+ veuillez voir réponse de @Lahiru à cette question. Cela contient des informations plus actuelles.
Pour MySQL <5.7:
Le mot de passe root par défaut est vide (c'est-à-dire une chaîne vide) et non pas root
. Vous pouvez donc simplement vous connecter en tant que:
mysql -u root
Vous devriez é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 utilisateur individuels avant de travailler également de manière intensive avec la base de données.
J'ai pu résoudre ce problème en exécutant cette déclaration
Sudo dpkg-reconfigure mysql-server-5.5
Ce qui changera le mot de passe root.
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
(la ligne ci-dessus est la commande entière)
Ce sera une commande en cours jusqu'à la fin du processus, 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 s'appelle 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".
si le problème persiste, essayez de forcer le changement de laissez-passer
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
Configurez 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 le serveur MySQL:
/etc/init.d/mysql stop
Démarrez le serveur MySQL et testez-le:
mysql -u root -p
Lors du démarrage initial du serveur, les événements suivants se produisent, étant donné que le répertoire de données du serveur est vide:
Pour le révéler, utilisez la commande suivante:
Shell> Sudo grep 'temporary password' /var/log/mysqld.log
Modifiez le mot de passe root le plus rapidement possible en vous connectant avec le mot de passe temporaire généré et définissez un mot de passe personnalisé pour le compte superutilisateur:
Shell> mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!';
Je sais que c'est une vieille question mais je pense que cela pourrait aider quelqu'un. J'ai eu récemment le même problème mais, dans mon cas, je me souviens très bien de mon mot de passe, mais il continuait à me donner la même erreur. J'ai essayé tellement de solutions mais aucune n'a encore aidé alors j'ai essayé cette
mysql -u root -p
après quoi il vous demande un mot de passe comme celui-ci
Enter password:
et puis j'ai tapé le mot de passe que j'ai utilisé. C'est tout
Cela se produit lorsque votre mot de passe est manquant.
Étapes pour changer le mot de passe quand vous avez oublié:
Arrêtez le serveur MySQL (sous Linux):
Sudo systemctl stop mysql
Démarrez la base de données sans charger les tables de subventions ni activer la mise en réseau:
Sudo mysqld_safe --skip-grant-tables --skip-networking &
La perluète à la fin de cette commande fera exécuter ce processus dans le
background 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 Répertoire '/ var/run/mysqld' pour UNIX
Le fichier de socket n'existe pas . mysql -u racine ERROR 2002 (HY000): Impossible de se connecter au serveur MySQL local via socket
'/ var/run/mysqld/mysqld.sock' (2) [1] + sortie 1
Créez le répertoire de service 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
Exécutez la même commande à l'étape 2 pour exécuter mysql en arrière-plan.
Exécutez mysql -u root, vous obtiendrez la console mysql sans entrer de mot de passe.
Exécuter 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 plus ancien
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 sortir
Pour arrêter l'instance démarrée manuellement
Sudo kill `cat /var/run/mysqld/mysqld.pid`
Redémarrer mysql
Sudo systemctl start mysql
J'utilise Ubuntu-16.04: MySQL installé - 5.7 . J'ai eu le même problème: Login refusé pour l'utilisateur root.
Essayé les étapes ci-dessous:
dpkg --get-selections | grep mysql
(pour obtenir la version de mysql).
dpkg-reconfigure mysql-server-5.7
mysql -u root -p
Sans -p cela ne vous invite pas à demander un mot de passe. Une fois que vous êtes dans, vous pouvez créer un utilisateur avec un mot de passe en procédant comme suit:
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 à partir de la racine et connectez-vous à partir de la précédente.
mysql -u <your_new_username> -p
Pour une raison quelconque, le simple fait de taper mysql ne fonctionne pas. AT ALL. Je suggère de prendre l'habitude d'utiliser mysql -u <name> -p
.
Je suis tombé sur ce problème très agaçant et j'ai trouvé de nombreuses réponses qui ne fonctionnaient pas. 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 définissez un mot de passe root, ce qui corrige 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 alors je ne prends aucun crédit pour cela. Mais cela fonctionne . Pour installer mysql après sa désinstallation, je pense que Digital Ocean a un bon tutoriel à ce sujet. Commander mon Gist pour cela .
https://Gist.github.com/JamesDaniel/c02ef210c17c1dec82fc973cac484096
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');
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 devriez enregistrer le mot de passe. Le mot de passe ne peut pas être récupéré.
Suivez les instructions
cd /usr/local/mysql/bin/
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('{YOUR_PASSWORD}');
Si vous souhaitez définir votre mot de passe: "root", la commande serait alors, SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
exit
./mysql -u root -p
Pour plus de commodité, vous devriez ajouter "/usr/local/mysql/bin"
à votre PATH
Maintenant, où que vous soyez, vous pouvez taper ./mysql -u root -p
puis taper le mot de passe et vous obtiendrez mysql> Prompt.
J'espère que ça aide.
La réponse peut sembler stupide, mais après avoir perdu du temps, voici comment je me suis débrouillé
mysql -u root -p
J'ai eu le message d'erreur
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Même si je tapais le mot de passe correct (le mot de passe temporaire que vous avez obtenu lors de la première installation de mysql)
J'ai tout compris quand j'ai tapé le mot de passe alors que l'invite du mot de passe clignotait
si le problème persiste, essayez de forcer le changement de laissez-passer
Arrêtez le serveur MySQL (sous Linux):
/etc/init.d/mysql stop
Arrêtez le serveur MySQL (sous Mac OS X):
mysql.server stop
Démarrer le démon mysqld_safe avec --skip-grant-tables
mysqld_safe --skip-grant-tables &
mysql -u root
Configurez 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 le serveur MySQL (sous Linux):
/etc/init.d/mysql stop
Arrêtez le serveur MySQL (sous Mac OS X):
mysql.server stop
Démarrez le service serveur MySQL et testez la connexion par root:
mysql -u root -p
il suffit d'entrer le terminal
mysql -u root -p. qu'il vous demandera un mot de passe
Juste une ligne et cela a résolu mon problème.
Sudo dpkg-reconfigure mysql-server-5.5
Dans Ubuntu 16.04 (MySQL version 5.7.13), j'ai pu résoudre le problème en procédant comme suit:
Suivez les instructions de la section B.5.3.2.2 dans Réinitialisation du mot de passe racine: Systèmes Unix et analogues Manuel de référence MySQL 5.7
Quand j'ai essayé #Sudo, mysqld_safe --init-file =/home/me/mysql-init & cela a échoué. L'erreur était dans /var/log/mysql/error.log
2016-08-10T11: 41: 20.421946Z 0 [Note] L'exécution de init_file '/ home/me/mysql/mysql-init' a commencé . 2016-08-10T11: 41: 20.422070Z 0 [ERREUR]/usr/sbin/mysqld: Le fichier '/ home/moi/mysql/mysql-init' n'a pas été trouvé (Code d'erreur: 13 - Autorisation refusée) 2016-08-10T11: 41: 20.422096Z 0 [ERREUR] Abandon
La permission de fichier de mysql-init n'était pas le problème, il faut éditer la permission d'apparmor
É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>
}
Ne rechargez #Sudo /etc/init.d/apparmor
Démarrez à nouveau mysqld_safe et passez à l'étape 2 ci-dessus. Vérifiez /var/log/mysql/error.log pour vous assurer qu'il n'y a pas d'erreur et que mysqld est démarré avec succès
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.
Arrêtez mysqld_safe par #Sudo mysqladmin -u root -p shutdown
Démarrez mysqld de manière normale en #Sudo systemctl démarrez mysql
Cela fonctionnera si vous entrez les commandes dites dans les autres réponses mais que vous obtenez toujours les erreurs suivantes:
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 -uroot 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;
#Now you can use your new password to login to your Server
mysql -uroot -p
Si vous n'avez pas encore défini de mot de passe, lancez mysql -uroot
, cela fonctionne pour moi.
J'ai eu un problème similaire:
ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: NO)
Mais dans mon cas, la cause était vraiment idiote. J'ai copié la commande à partir d'un document Word. Le problème était qu'un trait d'union ne comportait pas le code 2D ASCII mais le code Unicode E28093.
Fausse route:
mysql -u root –pxxxx
La bonne façon:
mysql -u root -pxxxx
Les deux se ressemblent mais ne se ressemblent pas (essayez, copiez et collez en remplaçant votre mot de passe).
Face à ce type d'erreur, il est recommandé d'essayer de taper la commande au lieu de copier-coller.
Sur Mac, si vous rencontrez un problème pour vous connecter avec le premier mot de passe qui vous a été attribué lors de l’installation, vous pouvez peut-être simplement arrêter le processus mysql puis essayer.
Donc: 1- lancez la commande suivante pour trouver le PID de mysql:
ps -aef | grep mysql | grep -v grep
2- tuer 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 d'entrer votre mot de passe. Il suffit d'entrer le mot de passe initial.
Par défaut, le mot de passe sera nul. Vous devez donc changer de mot de passe en procédant comme suit.
se connecter à mysql
root # mysql
Utilisez mysql
mysql> update user set password = PASSWORD ('root') où User = 'root'; Enfin, rechargez les privilèges
mysql> privilèges de vidage; mysql> quit
J'ai essayé avec la bonne réponse de @Lahiru, mais je n'ai pas fonctionné avec le serveur MySQL version 8.0.16 (Community) sur macOS Mojave.
Suivez les instructions de Sameer Choudhary ci-dessus et avec quelques ajustements, j'ai été en mesure de changer le mot de passe root et d'activer l'accès root à partir de localhost.
Mise à jour: Tous ces éléments ne sont pas nécessaires si vous installez sous Mac OS sous homebrew: "brew install mysql"
Dans les versions récentes de MySQL, il n'y a pas de password
dans la table mysql.user
.
Donc, vous devez exécuter ALTER USER
. Mettez cette commande d'une ligne dans le fichier.
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Et l'exécuter 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
.
De plus, il peut y avoir un problème avec les autorisations apparmor pour charger ce fichier init. Lire la suite ici https://blogs.Oracle.com/jsmyth/entry/apparmor_and_mysql