J'installe un nouveau serveur et continue de rencontrer ce problème.
Lorsque j'essaie de me connecter à la base de données MySQL avec l'utilisateur root, j'obtiens l'erreur:
ERREUR 1698 (28000): accès refusé à l'utilisateur 'root' @ 'localhost'
Peu importe que je me connecte via le terminal (SSH), via PHPMyAdmin ou un client MySQL, par exemple Navicat. Ils échouent tous.
J'ai regardé dans la table mysql.user et obtenu ce qui suit:
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Comme vous pouvez le voir, root devrait avoir accès.
Le serveur est assez simple, car j'ai essayé de résoudre ce problème depuis un certain temps maintenant ..
Il exécute Ubuntu 16.04.1 LTS avec Apache, MySQL et PHP, afin qu'il puisse héberger des sites Web et iRedMail 0.9.5-1, afin qu'il puisse héberger du courrier.
La connexion à la base de données MySQL fonctionne correctement avant d'installer iRedMail. J'ai également essayé, juste d'installer iRedMail, mais ensuite root, ne fonctionne pas non plus ...
Si quelqu'un pouvait me dire comment résoudre mon problème de connexion MySQL ou comment installer iRedMail, en plus d'une installation MySQL existante. Et oui, j'ai essayé les conseils d'installation et je ne trouve pas ces variables dans les fichiers de configuration.
sudo mysql_secure_installation
est le moyen le plus simple de résoudre ce problèmeRéponses:
Certains systèmes comme Ubuntu, mysql utilise par défaut le plugin UNIX auth_socket .
Signifie essentiellement que: db_users l'utilisant, sera "auth" par les informations d'identification de l'utilisateur système. Vous pouvez voir si votre
root
utilisateur est configuré comme ceci en procédant comme suit:Comme vous pouvez le voir dans la requête, l'
root
utilisateur utilise leauth_socket
pluginIl existe 2 façons de résoudre ce problème:
mysql_native_password
plugindb_user
avec voussystem_user
(recommandé)Option 1:
Option 2: (remplacez YOUR_SYSTEM_USER par le nom d'utilisateur que vous avez)
N'oubliez pas que si vous utilisez l'option # 2, vous devrez vous connecter à mysql comme nom d'utilisateur de votre système (
mysql -u YOUR_SYSTEM_USER
)Remarque: Sur certains systèmes (par exemple, Debian stretch) le plugin 'auth_socket' est appelé 'unix_socket' , donc la commande SQL correspondante devrait être:
UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';
Mise à jour: le commentaire de @ andy semble que mysql 8.xx a mis à jour / remplacé le
auth_socket
carcaching_sha2_password
je n'ai pas de configuration système avec mysql 8.xx pour tester cela, mais les étapes ci-dessus devraient vous aider à comprendre le problème. Voici la réponse:Un changement depuis MySQL 8.0.4 est que le nouveau plugin d'authentification par défaut est 'caching_sha2_password'. Le nouveau 'YOUR_SYSTEM_USER' aura ce plugin d'auth et vous pouvez vous connecter depuis le shell bash maintenant avec "mysql -u YOUR_SYSTEM_USER -p" et fournir le mot de passe de cet utilisateur à l'invite. Pas besoin de l'étape "UPDATE user SET plugin". Pour la mise à jour du plug-in d'authentification par défaut 8.0.4, voir https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/
la source
sudo gedit /etc/phpmyadmin/config.inc.php
. Ensuite, j'ai recherchéAllowNoPassword
et décommenté les deux lignes qui le contenaient. Ensuite, j'ai pu me connecter en tant que root sans mot de passe.IDENTIFIED BY ''
bit devrait probablement êtreIDENTIFIED BY 'YOUR_PASSWD'
mysqld_safe --skip-grant-tables
etc., et cela ne fonctionne pas.sudo mysql -u root -p
ne me laisse pas entrer?Vérifier ici:
La nouvelle version de MYSQL le fait de cette façon.
Dans le nouveau my-sql si le mot de passe est laissé vide lors de l'installation, il est basé sur le
auth_socket
plugin.La bonne façon est de vous connecter à my-sql avec des
sudo
privilèges.Et puis mettre à jour le mot de passe en utilisant:
Une fois cela fait,
stop and start
le serveur mysql.Pour plus de détails, vous pouvez vous référer à ce lien .
Faites un commentaire pour tout doute.
la source
J'avais ce problème sur une machine virtuelle Debian 8 avec laquelle j'interagissais via Putty sur mon bureau Windows 10.
J'ai essayé les différentes suggestions ici mais rien n'a fonctionné et j'exécute MariaDB sur l'hôte Debian. À la fin, j'ai constaté que je ne pouvais pas démarrer le serveur db en mode sans échec, mais je n'en avais pas besoin et les commandes suivantes ont réellement fonctionné pour moi, c'est-à-dire permettre à un utilisateur MySql nouvellement créé de se connecter au serveur MySql / MariaDB:
Si ce qui précède ne fonctionne pas tout à fait pour vous, suivez les étapes décrites dans le post de zetacu ci-dessus ( zetacu ), puis suivez mes étapes.
Vous devriez maintenant pouvoir utiliser un client de terminal distant et vous connecter en toute sécurité à mysql en utilisant la commande:
* tapez le mot de passe lorsque vous y êtes invité
la source
Je suggère de supprimer la connexion Mysql -
MISE À JOUR - Ceci est pour Mysql version 5.5, si votre version est différente, veuillez modifier la première ligne en conséquence
Et réinstallez Mais cette fois, définissez vous-même un mot de passe root. Cela vous fera économiser beaucoup d'efforts.
la source
Après des heures de lutte sans solution ici, cela a fonctionné pour moi, puis j'ai trouvé une vidéo youtube où il est dit que la colonne de mot de passe s'appelle maintenant authentification_chaîne. J'ai donc pu changer mon mot de passe comme suit: Tout d'abord, accédez à mysql depuis le terminal
puis à l'intérieur de mysql tapez quoi que ce soit après mysql>
à ce stade, vous avez quitté mysql pour revenir à votre emplacement de terminal normal. Vous devez redémarrer mysql pour que cela prenne effet. pour ce type, les éléments suivants:
Reportez-vous à ce lien vidéo pour une meilleure compréhension
la source
étape 1.
sudo mysql -u root -p
étape 2.
USE mysql;
étape 3.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';
Ici, «admin» est votre nouveau mot de passe, vous pouvez le changer.
étape 4.
exit
Merci. Vous avez terminé.
la source
Pas besoin de sudo
La base de données est initialisée avec 2 comptes tous privilèges: le premier est "root" qui est inaccessible et le second avec votre nom d'utilisateur (vérifiez avec la commande
whoami
).Pour activer l'accès au compte root, vous devez vous connecter avec votre nom d'utilisateur
et changer manuellement le mot de passe pour root
Connectez-vous en tant que «root»
la source
Première étape: allez dans /etc/phpmyadmin/config.inc.php puis décommentez les lignes où vous trouvez AllowNoPassword. Deuxième étape: connectez-vous à votre compte par défaut mysql
et c'est tout!
la source
Cela a fonctionné pour moi:
la source
J'ai également rencontré le même problème la première fois.
Maintenant, il est corrigé:
Tout d'abord, vous copiez le
/etc/mysql/mysql.conf.d/mysqld.cnf
fichier et le collez dans/etc/mysql/my.cnf
.Vous pouvez le faire par commande:
Maintenant, reposons le mot de passe:
Utilisez les commandes suivantes dans votre terminal:
Vous êtes maintenant dans la console mysql.
Écrivons ensuite quelques requêtes pour réinitialiser notre mot de passe root
Maintenant, nous pouvons nettoyer
/etc/mysql/my.cng
Ouvrez le fichier ci-dessus dans votre éditeur et supprimez toutes les lignes à l'intérieur du fichier.
Après cela, redémarrons mysql:
Utilisons maintenant mysql avec le nouveau mot de passe créé:
Saisissez enfin votre nouveau mot de passe.
la source
J'ai trouvé ma solution après des heures de recherche ici.
Arrêtez MySQL
Créez le répertoire du service MySQL.
Donnez à l'utilisateur MySQL la permission d'écrire dans le répertoire du service.
Démarrez MySQL manuellement, sans vérification des autorisations ni mise en réseau.
Connectez-vous sans mot de passe.
mettre à jour le mot de passe
Désactivez MySQL.
Démarrez le service MySQL normalement.
la source
Vous souhaitez accéder à MySQL avec l'utilisateur root mais vous ne fournissez pas le mot de passe correct de root.
Si vous devez définir un nouveau mot de passe pour root , le site de MySQL a une excellente documentation sur la façon de le faire: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Je ne montrerai pas le processus ici car la documentation MySql sur le lien ci- dessus est claire et concise .
la source
os: Ubuntu18.04
mysql: 5.7
ajouter le
skip-grant-tables
fichier à la fin de mysqld.cnfcp le my.cnf
skip-grant-tables
de my.cnfvalidate_password
notez que vous devez savoir que votre erreur est due à quoi? validate_password_policy?
vous devez décider de réinitialiser votre mot de passe pour remplir la politique ou modifier la politique.
la source
Cela est arrivé à moi aussi. Le problème vient du repo mysql qui vient déjà avec la distribution linux. Donc, quand vous le faites simplement:
$ sudo apt install mysql-server
il installe mysql à partir de leur dépôt par défaut, ce qui pose ce problème. Donc, pour surmonter cela, vous devez désinstaller ce mysql installé$ sudo apt remove mysql* --purge --auto-remove
Ensuite, téléchargez le référentiel mysql sur le site officiel de mysql MySQL APT Repo Suivez leur documentation sur la façon d'ajouter le référentiel et de l'installer. Cela ne pose aucun problème. Aussi comme répondu par @zetacu, vous pouvez vérifier que la racine mysql utilise bien le plugin mysql_native_password
la source
dans mon cas,
Je suis sûr que mon mot de passe était correct, sinon le code d'erreur serait
ERROR 1045 (28000): Access denied for user
donc je me reconnecte en utilisant sudo,
cette fois, cela a fonctionné pour moi. voir les documents
puis changer le mot de passe root,
puis redémarrez le serveur en utilisant
sudo /etc/init.d/mysql restart
la source