web-dev-qa-db-fra.com

MySQL échoue sur: mysql "ERREUR 1524 (HY000): le plug-in 'auth_socket' n'est pas chargé"

Mon environnement local est:

  • ubuntu frais 16.04
  • 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) D'abord un problème de socket

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

Solution: redémarrage du PC.

Ce qui a conduit à une autre erreur:

2) avec accès refusé

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

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 et une prise de travail corrects, la dernière erreur survient.

3) plug-in d'authentification incorrect

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

Ici je me suis arrêté ou en quelque sorte à 1) à nouveau.

71
Tomáš Votruba

J'ai une solution!

Lors de la réinitialisation du mot de passe root à l'étape 2), modifiez également le plug-in 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 complète de code

1. lancer les commandes bash

1. d'abord, lancez ces commandes bash

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 lancez les commandes mysql => copier/coller ceci pour 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. lancer plus de 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 socket (à partir de vos commentaires)

Lorsque vous voyez une erreur socket, une communauté propose deux solutions:

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)


Chemins aveugles et erreurs de bord possibles

Utilisez 127.0.0.1 au lieu de localhost

mysql -uroot # "-hlocalhost" is default

Peut conduire à "fichier manquant" ou erreur slt.

mysql -uroot -h127.0.0.1

Fonctionne mieux.

Passer le problème de la prise

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

Ignorer le fichier my.cnf

La question n'était pas non plus là. Si vous n'êtes pas sûr, cela pourrait vous aider .

212
Tomáš Votruba

Vous pouvez essayer comme suit, cela fonctionne pour moi.

Démarrer le serveur:

Sudo service mysql start

Maintenant, allez dans le dossier chaussette:

cd /var/run

Sauvegardez la chaussette:

Sudo cp -rp ./mysqld ./mysqld.bak

Arrêtez le serveur:

Sudo service mysql stop

Restaurez la chaussette:

Sudo mv ./mysqld.bak ./mysqld

Démarrez mysqld_safe:

 Sudo mysqld_safe --skip-grant-tables --skip-networking &

Init mysql Shell:

 mysql -u root

Changer le mot de passe:

Par conséquent, choisissez d'abord la base de données

mysql> use mysql;

Maintenant, entrez ci-dessous deux requêtes:

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

Maintenant, tout ira bien.

mysql> flush privileges;
mysql> quit;

Pour vérifier:

mysql -u root -p

terminé!

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

Maintenant, vérifiez hostname/phpmyadmin

Username: root

Password: 123456

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

13
Bablu Ahmed

Vous pouvez essayer ces quelques étapes:

Arrêtez le service Mysql 1er Sudo /etc/init.d/mysql stop 

Connectez-vous en tant que root sans mot de passe Sudo mysqld_safe --skip-grant-tables & 

Après la connexion au terminal mysql, vous aurez besoin de plus de commandes d'exécution:

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 root de MySQL 5.7, Ubuntu 16.04

8
Inderpal Singh

La commande mysql utilise par défaut des sockets UNIX pour se connecter à MySQL.

Si vous utilisez MariaDB, vous devez charger le plug-in d'authentification de socket Unix sur le serveur.

Vous pouvez le faire en modifiant la configuration [mysqld] comme ceci:

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

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

3
rustyx

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 & quit (utilisez quit si c'est bloqué)

se connecter à mysql sans mot de passe 

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

    étape 5: SELECT utilisateur, authentication_string, plugin, hôte FROM mysql.user;

    étape 6: ALTER USER 'root' @ '' localhost 'IDENTIFIÉ AVEC mysql_native_password BY' root '

connectez-vous maintenant avec 

  • mysql -u root -p 
1
arunava maiti

Essayez-le: Sudo mysql_secure_installation

Le travail est à Ubuntu 18.04

0
Gorcer