J'ai installé MySQL server 5 sur redhat linux. Je ne peux pas me connecter en tant que root, donc je ne peux pas changer le mot de passe root.
mysql -u root -p
Enter password: <blank>
ERROR 1045 (28000): Access denied for user 'root'@'localhost'
(using password: NO)
Lorsque j'essaie d'en définir un comme ceci:
mysqladmin -u root password 'newpass'
Je reçois une erreur:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost'
(using password: NO)'
Comme s'il y avait un mot de passe root.
J'ai également essayé de réinitialiser le mot de passe en utilisant (décrit ici )
/sbin/service mysqld start --skip-grant-tables
Et puis faire:
mysql> UPDATE mysql.user SET Password=PASSWORD('newpass')
-> WHERE User='root';
ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'
J'ai même désinstallé mysql-server (en utilisant yum) puis l'ai réinstallé mais cela n'a pas aidé.
Comment forcer la réinitialisation du mot de passe root?
J'ai supprimé l'installation de MySQL et supprimé les fichiers de données, puis l'ai réinstallé.
Ensuite, j'ai pu définir le mot de passe root. Une fois que vous avez défini le mot de passe root sur quelque chose. mysqladmin ne vous laissera pas le réinitialiser si vous ne le connaissez pas.
Pour le réinitialiser, vous devez être propriétaire de la façon dont mysqld est exécuté et lui fournir un fichier init pour changer le mot de passe root: https://dev.mysql.com/doc/refman/5.0/en /resetting-permissions.html
Une option consiste à enregistrer UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
dans un fichier, puis à démarrer manuellement mysqld
avec --init-file=FILENAME
. Une fois que le serveur démarre, il doit réinitialiser votre mot de passe, puis vous devriez pouvoir vous connecter. Après cela, vous devez arrêter le serveur et le démarrer normalement.
Le mot de passe de l'utilisateur root est une chaîne vide par défaut.
Et (using password: NO)
indique qu'il n'y a pas de mot de passe.
Essayez-vous de vous connecter à partir d'un autre système? J'imagine que vous ne pouvez vous connecter en tant qu'utilisateur root que localement.
Un peu tard pour le jeu, mais j'ai eu le même problème lors d'une installation de Raspberry Pi et j'ai découvert qu'il avait besoin d'élévation. L'ajout d'un Sudo au début du changement de mot de passe lui a permis de fonctionner.
Sudo mysqladmin -u root password 'newpass'
suivi d'un accès sql surélevé
Sudo mysql -u root -p
Si l'un ou l'autre n'est pas exécuté en tant que Sudo, il échouera.
Cela m'a aidé sur Windows avec MySQL Server 5.6. Assurez-vous de changer le chemin mysqld
pour indiquer où vous avez installé MySql Server, pour moi c'était "C:\Program Files\mysql\MySQL Server 5.6\bin\mysqld.exe"
:
Connectez-vous à votre système en tant qu'administrateur.
Arrêtez le serveur MySQL s'il est en cours d'exécution. Pour un serveur qui s'exécute en tant que service Windows, accédez au gestionnaire de services: dans le menu Démarrer, sélectionnez Panneau de configuration, puis Outils d'administration, puis Services. Recherchez le service MySQL dans la liste et arrêtez-le.
Si votre serveur ne fonctionne pas en tant que service, vous devrez peut-être utiliser le Gestionnaire des tâches pour le forcer à s'arrêter.
Créez un fichier texte contenant les instructions suivantes. Remplacez le mot de passe par le mot de passe que vous souhaitez utiliser.
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
Écrivez les instructions UPDATE et FLUSH chacune sur une seule ligne. L'instruction UPDATE réinitialise le mot de passe pour tous les comptes root et l'instruction FLUSH indique au serveur de recharger les tables d'octroi en mémoire afin qu'il remarque le changement de mot de passe.
Enregistrez le fichier. Pour cet exemple, le fichier sera nommé C:\mysql-init.txt
.
Ouvrez une fenêtre de console pour accéder à l'invite de commande: dans le menu Démarrer, sélectionnez Exécuter, puis entrez cmd comme commande à exécuter.
Démarrez le serveur MySQL avec l'option spéciale --init-file (notez que la barre oblique inverse dans la valeur de l'option est doublée):
C:\> C:\mysql\bin\mysqld --init-file=C:\\mysql-init.txt
Si vous avez installé MySQL à un emplacement autre que C:\mysql, ajustez la commande en conséquence.
Le serveur exécute le contenu du fichier nommé par l'option --init-file au démarrage, en changeant chaque mot de passe de compte root.
Vous pouvez également ajouter l'option --console à la commande si vous souhaitez que la sortie du serveur apparaisse dans la fenêtre de la console plutôt que dans un fichier journal.
Si vous avez installé MySQL à l'aide de l'assistant d'installation MySQL, vous devrez peut-être spécifier une option --defaults-file:
C:\> "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld.exe"
--defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.5\\my.ini"
--init-file=C:\\mysql-init.txt
Le paramètre --defaults-file approprié peut être trouvé à l'aide du Gestionnaire de services: Dans le menu Démarrer, sélectionnez Panneau de configuration, puis Outils d'administration, puis Services. Recherchez le service MySQL dans la liste, cliquez dessus avec le bouton droit et choisissez l'option Propriétés. Le champ Path to executable contient le paramètre --defaults-file.
Une fois le serveur démarré avec succès, supprimez C:\mysql-init.txt.
http://docs.Oracle.com/cd/E17952_01/refman-5.5-en/resetting-permissions.html
Probablement un peu tard ici, mais voici ce que j'ai fait:
créez le fichier resetpass.sh qui a:
UPDATE mysql.user SET Password=PASSWORD('newpassword') WHERE User='root';
# mysqld_safe --init-file=resetpass.sh
# service mysqld start --skip-grant-tables
# mysql -u root -p
Entrez le pass
mysql > change root pass ; flush privs;
quitter
# restart mysql service
La version MySQL que j'utilisais était 5.1.73 sous centos6
Supprimez le -p de votre commande. -p force l'invite de mot de passe.
Utilisation : mysql -u root
Cela résoudra votre problème.
Essayez de faire ceci:
mysql -u root
et alors:
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
-> WHERE User='root';
mysql> FLUSH PRIVILEGES;
Ça a bien marché pour moi!
Selon les documents, dans MySQL 5.7, le mot de passe temporaire est mis dans /var/log/mysqld
, mais ce n'est évidemment pas le cas en 5.6.
Avec MySQL version 5.6 installé sur RHEL 6.7, j'ai finalement trouvé que le mot de passe root temporaire défini lors de l'installation était placé dans le fichier /root/.mysql_secret
.