162 votes

MySQL échoue sur : mysql "ERROR 1524 (HY000) : Le plugin 'auth_socket' n'est pas chargé".

Mon environnement local est :

  • Ubuntu 16.04 frais
  • avec PHP 7
  • avec MySQL 5.7 installé

    sudo apt-get install mysql-common mysql-server

Lorsque j'ai essayé de me connecter à MySQL (via CLI) :

mysql -u root -p

Je suis tombé sur un problème cyclique en 3 étapes.

1) La première était un problème de prise de courant

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

Solution : redémarrer le PC.

Ce qui a conduit à une autre erreur :

2) Avec un accès refusé

ERROR 1698 (28000): Access denied for user 'root'@'localhost'.

Un problème possible ? Mauvais mot de passe pour l'utilisateur "Root" !

Solution : réinitialiser le mot de passe Root avec ce tutoriel .

Avec un mot de passe correct et une prise qui fonctionne, il y a une dernière erreur.

3) Mauvais plugin d'authentification

mysql "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded"

Ici, je me suis arrêté ou, d'une manière ou d'une autre, je suis revenu au point 1).

2 votes

Content que ça marche bien pour vous :) merci de nous avoir contactés !

429voto

Tomáš Votruba Points 78

J'ai une solution !

Lorsque vous réinitialisez le mot de passe Root à l'étape 2), changez également le plugin auth en mysql_native_password :

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE

flush privileges;
quit;

Cela m'a permis de me connecter avec succès !


Solution à code complet

1. exécuter les commandes bash

1. Tout d'abord, exécutez les commandes bash suivantes

sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

2. puis lancer les commandes mysql => copier coller ceci au cli manuellement

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user

flush privileges;
quit;

3. exécuter d'autres commandes bash

sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p 

4. Problème de prise (d'après vos commentaires)

Lorsque vous voyez un prise de courant erreur, une communauté est venue avec 2 solutions possibles :

sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &

(merci à @Cerin)

Ou

mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld  

(merci à @Peter Dvukhrechensky)


Trajets aveugles et erreurs de bord éventuelles

Utiliser 127.0.0.1 au lieu de localhost

mysql -uroot # "-hlocalhost" is default

Peut conduire à l'erreur "fichier manquant" ou slt.

mysql -uroot -h127.0.0.1

Ça marche mieux.

Ignorer le problème des prises

J'ai trouvé de nombreuses façons de créer mysqld.sock modifier les droits d'accès ou établir un lien symbolique. Ce n'était pas le problème après tout.

Sauter le my.cnf fichier

Le problème n'était pas non plus présent. Si vous n'êtes pas sûr, ceci pourrait vous aider .

3 votes

Merci pour cela. Il s'agit également d'une excellente réponse sur la façon de réinitialiser le pass Root de mysql. Vous pourriez donc modifier légèrement le titre pour qu'il apparaisse avant que nous ne rencontrions déjà le problème des sockets.

1 votes

Je suis content que ça ait aidé. Comment modifier le titre pour conserver le message d'origine ? Je comprends que la solution nécessite de réinitialiser le mot de passe, mais cela ne résout pas le problème du titre. C'est un échec plus complexe de plus de points. Pour la réinitialisation du mot de passe Root, j'irais ici : stackoverflow.com/a/6401963/1348344

0 votes

Merci, cela semble fonctionner. Une idée de la raison pour laquelle la définition du plugin doit être modifiée ?

58voto

Bablu Ahmed Points 739

Vous pouvez essayer comme suit, cela fonctionne pour moi.

Démarrer le serveur :

sudo service mysql start

Maintenant, allez dans le dossier sock :

cd /var/run

Remonte la chaussette :

sudo cp -rp ./mysqld ./mysqld.bak

Arrêtez le serveur :

sudo service mysql stop

Restaurez la chaussette :

sudo mv ./mysqld.bak ./mysqld

Lancez mysqld_safe :

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

Init mysql shell :

 mysql -u root

Changez le mot de passe :

Donc, choisissez d'abord la base de données

mysql> use mysql;

Maintenant, entrez les deux requêtes ci-dessous :

mysql> update user set authentication_string=password('123456') where user='root';
mysql> update user set plugin="mysql_native_password" where User='root'; 

Maintenant, tout va bien se passer.

mysql> flush privileges;
mysql> quit;

Pour vérifier :

mysql -u root -p

C'est fait !

N.B, After login please change the password again from phpmyadmin

Vérifiez maintenant hostname/phpmyadmin

Username: root

Password: 123456

Pour plus de détails, veuillez consulter Comment réinitialiser le mot de passe oublié phpmyadmin dans Ubuntu

3 votes

Il n'y a que ça qui marche pour moi ! la prise de sauvegarde et de restauration est plutôt intelligente

1 votes

ERREUR 1045 (28000) : Accès refusé pour l'utilisateur 'Root'@'localhost' (utilisant le mot de passe : YES) avant la ligne "done !" dans votre réponse lorsque vous essayez de vous connecter avec 123456.

0 votes

J'ai résolu les étapes décrites dans phpmyadmin (c'est-à-dire changer le mot de passe, changer le plugin). Pour une raison quelconque, 'set authentication_string=password(...)' a fait cesser le fonctionnement (Error 1045 (28000) : Accès refusé...).

23voto

rustyx Points 2722

Le site mysql utilise par défaut les sockets UNIX pour se connecter à MySQL.

Si vous utilisez MariaDB, vous devez charger le programme Plugin d'authentification pour les sockets Unix du côté du serveur.

Vous pouvez le faire en modifiant le [mysqld] configuration comme celle-ci :

[mysqld]
plugin-load-add = auth_socket.so

Selon la distribution, le fichier de configuration est généralement situé à l'adresse suivante /etc/mysql/ ou /usr/local/etc/mysql/

3 votes

CETTE réponse. Toutes les autres réponses expliquent comment contourner l'erreur. Celle-ci explique comment la RÉSOUDRE.

0 votes

Si vous êtes sur MariaDB 10.4.3 et plus, le plugin auth unix_socket devrait être installé par défaut, mais si vous le référencez incorrectement comme plugin="auth_socket", au lieu de plugin="unix_socket" lors de la mise à jour de votre "user", vous recevrez ce message quelque peu trompeur. Ma réponse explique comment je me suis trompé.

0 votes

Si vous n'êtes pas sous Debian ou Ubuntu, vous devrez peut-être charger le plugin. "Dans les autres systèmes, bien que la bibliothèque partagée du plugin soit distribuée avec MariaDB par défaut sous le nom de auth_socket.so, le plugin n'est pas réellement installé par MariaDB par défaut. Il existe deux méthodes qui peuvent être utilisées pour installer le plugin avec MariaDB." [[ [mariadb.com/kb/fr/authentication-plugin-unix-socket/]]](https://mariadb.com/kb/en/authentication-plugin-unix-socket/]]) Dans mon cas, je devais donc encore ajouter le plugin pour Manjaro

13voto

arunava maiti Points 331

Pour Ubuntu 18.04 et mysql 5.7

  • étape 1 : sudo mkdir /var/run/mysqld;

    étape 2 : sudo chown mysql /var/run/mysqld

    étape 3 : sudo mysqld_safe --skip-grant-tables & quittez (utilisez quit s'il est bloqué)

se connecter à mysql sans mot de passe

  • étape 4 : sudo mysql --user=root mysql

    étape 5 : SELECT user,authentication_string,plugin,host FROM mysql.user;

    étape 6 : ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'

Connectez-vous maintenant avec

  • mysql -u root -p <root>

2 votes

Mais à quelle étape puis-je définir le passe pour Root ? parce que j'ai essayé $ mysql -u root -p mais l'accès est encore refusé. Access denied for user 'root'@'localhost' (using password: YES) J'ai essayé d'entrer le mot de passe 'YES'.

9voto

Inderpal Singh Points 91

Vous pouvez essayer ces quelques étapes :

Arrêter le service Mysql 1 sudo /etc/init.d/mysql stop

Se connecter en tant que Root sans mot de passe sudo mysqld_safe --skip-grant-tables &

Après la connexion au terminal mysql, vous devez exécuter des commandes supplémentaires :

use mysql;

UPDATE mysql.user SET authentication_string=PASSWORD('solutionclub3@*^G'), plugin='mysql_native_password' WHERE User='root';

flush privileges;

sudo mysqladmin -u root -p -S /var/run/mysqld/mysqld.sock shutdown

Après avoir redémarré votre serveur mysql Si vous rencontrez toujours une erreur, vous devez visiter : Réinitialiser le mot de passe racine de MySQL 5.7 Ubuntu 16.04

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X