erreur: 'Impossible de se connecter au serveur MySQL local via le socket' /var/run/mysqld/mysqld.sock '(2)' - manquant /var/run/mysqld/mysqld.sock

322

Mon problème a commencé avec le fait que je ne pouvais plus me connecter en tant que root sur mon installation mysql. J'essayais d'exécuter mysql sans mot de passe activé ... mais chaque fois que j'exécutais la commande

# mysqld_safe --skip-grant-tables &

Je ne récupérerais jamais l'invite. J'essayais de suivre ces instructions pour récupérer le mot de passe .

L'écran ressemble à ceci:

root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

et je ne reçois pas d'invite pour commencer à taper les commandes SQL pour réinitialiser le mot de passe.

Lorsque je le tue en appuyant sur CTRL+ C, j'obtiens le message suivant:

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Si je réessaye la commande et la laisse assez longtemps, j'obtiens la série de messages suivante:

root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

[1]+  Done                    mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#

Mais si j'essaye de me connecter en tant que root en faisant:

# mysql -u root

Je reçois le message d'erreur suivant:

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

J'ai vérifié et le /var/run/mysqld/mysqld.sockfichier n'existe pas. C'est le dossier, mais pas le fichier.

De plus, je ne sais pas si cela aide ou non, mais j'ai couru find / -name mysqldet il est venu avec:

/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder

Je suis nouveau sur Linux et MySQL, donc je ne sais pas si c'est normal ou non. Mais j'inclus ces informations au cas où cela aiderait.

J'ai finalement décidé de désinstaller et réinstaller mysql.

apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin

Après avoir réinstallé tous les packages dans le même ordre que ci-dessus, lors de l'installation de phpmyadmin, j'ai eu la même erreur:

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

J'ai donc essayé à nouveau de désinstaller / réinstaller. Cette fois, après avoir désinstallé les packages, j'ai également renommé manuellement tous les fichiers et répertoires mysql mysql.baden leurs emplacements respectifs.

/var/lib/mysql 
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql

Ensuite, j'ai essayé de réinstaller mysql-serveret mysql-clientencore. Mais j'ai remarqué que cela ne me demandait pas de mot de passe. N'est-il pas censé demander un mot de passe administrateur?

point
la source
J'ai le même problème. Je l'ai résolu tout à l'heure. stackoverflow.com/questions/18150858/…
robert
résolu en redémarrant simplement le serveur, puis redémarrez le service mysql
bowpunya
@Anto Ce n'est pas un doublon. Celui-ci a /var/run/mysqld/mysqld.sockdisparu. Le problème que vous avez lié a ce fichier.
moto
Aucune des réponses que j'ai pu trouver ici ou ailleurs n'a résolu mon problème. Comme c'était un nouveau projet, je suis passé à PostgreSQL et ça marche! :-)
James Bradbury

Réponses:

195

Pour trouver tous les fichiers socket sur votre système, exécutez:

sudo find / -type s

Mon système de serveur Mysql avait le socket ouvert à /var/lib/mysql/mysql.sock

Une fois que vous avez trouvé l'emplacement d'ouverture du socket, ajoutez ou modifiez la ligne dans votre fichier /etc/my.cnf avec le chemin d'accès au fichier socket:

socket=/var/lib/mysql/mysql.sock

Parfois, le script de démarrage du système qui a lancé l'exécutable de ligne de commande spécifie un indicateur --socket=path. Cet indicateur pourrait remplacer l'emplacement my.cnf, ce qui entraînerait la non-localisation d'un socket là où le fichier my.cnf indique qu'il devrait être. Ensuite, lorsque vous essayez d'exécuter le client de ligne de commande mysql, il lira my.cnf pour trouver le socket, mais il ne le trouvera pas car il s'écarte de l'endroit où le serveur en a créé un. Donc, sauf si vous vous souciez de l'emplacement du socket, il suffit de modifier le fichier my.cnf pour qu'il corresponde.

Ensuite, arrêtez le processus mysqld. La manière de procéder variera selon le système.

Si vous êtes super utilisateur dans le système Linux, essayez l'une des méthodes suivantes si vous ne connaissez pas la méthode spécifique utilisée par votre configuration Mysql:

  • service mysqld stop
  • /etc/init.d/mysqld stop
  • mysqladmin -u root -p shutdown
  • Certains systèmes ne sont pas configurés pour avoir un moyen élégant d'arrêter mysql (ou pour une raison quelconque, mysql ne répond pas) et vous pouvez forcer la fermeture de mysql avec:
    • Un pas: pkill -9 mysqld
    • Deux étapes (le moins préféré):
      • Trouvez l'ID de processus de mysql avec pgrep mysqloups aux | grep mysql | grep -v grep
      • En supposant que l'ID de processus se 4969termine aveckill -9 4969

Après cela, vous voudrez peut-être rechercher un fichier pid /var/run/mysqld/et le supprimer

Assurez-vous que les autorisations sur votre socket sont telles que tout utilisateur mysqld en cours d'exécution peut lire / écrire dessus. Un test simple consiste à l'ouvrir en lecture / écriture complète et à voir si cela fonctionne toujours:

chmod 777 /var/run/mysqld/mysqld.sock

Si cela résout le problème, vous pouvez personnaliser les autorisations et la propriété du socket en fonction de vos paramètres de sécurité.

De plus, le répertoire dans lequel se trouve le socket doit être accessible par l'utilisateur exécutant le processus mysqld.

Rayon
la source
15
Veuillez ne pas recommander l'utilisation kill -9; il y a plusieurs façons qui devraient être essayées avant d'en arriver là.
Ignacio Vazquez-Abrams
@dot lance ceci dans le fichier racine 'find. -name mysqld.sock '. J'ai vu le fichier socket dans d'autres endroits que / var / run. Une fois que vous l'avez trouvé, vous devrez peut-être modifier votre fichier my.cnf pour indiquer où il se trouve.
Ray
@ray, j'ai essayé d'exécuter la commande d'origine d'une manière différente (j'ai trouvé un message spécifique à ubuntu sur un autre site ..). Voici les commandes que j'ai exécutées: "sudo service mysql stop" et "sudo mysqld --skip-grant-tables". Après avoir exécuté la deuxième commande, j'obtiens l'erreur suivante: "InnoDB: impossible de verrouiller ./ibdata1, erreur: 11". Je ne trouve pas ce fichier ./ibdata1 ... InnoDB: Vérifiez que vous n'avez pas encore un autre processus mysqld
dot
2
@dot s'exécute ps -aux | grep mysqldet voit si d'autres processus mysql sont en cours d'exécution
Ray
@rayon. je suis en train de déchirer mes cheveux mec. j'ai décidé de faire sauter mysql et de réessayer ... notez mon post mis à jour.
dot
251

Essayez cette commande,

sudo service mysql start
Joe Cheng
la source
+1 my.cnf pointait vers les bons répertoires, par mysql service était mort
wruckie
J'ai essayé la réponse acceptée mais je n'ai pas trouvé le mysql.sock, cela a fonctionné pour moi. Merci
Giovanne Afonso
1
Je devais utilisersudo service mysqld start
Gavin Miller
10
sudo apt-get install mysql-serversi vous ne l'avez pas déjà installé :)
aimme
17
Si vous rencontrez ce problème, exécutez cette commande simple EN PREMIER avant de tester les autres choses, cela ne prend qu'une seconde, et si le serveur ne fonctionne tout simplement pas et qu'il fonctionne bien après l'avoir démarré, cela signifie simplement qu'il n'a pas fonctionné 't autostart, qui serait alors le problème réel à résoudre.
Lizardx
137

Cette erreur se produit en raison de plusieurs installations de mysql. Exécutez la commande:

ps -A|grep mysql

Tuez le processus en utilisant:

sudo pkill mysql

puis exécutez la commande:

ps -A|grep mysqld

Tuez également ce processus en exécutant:

sudo pkill mysqld

Maintenant que vous êtes prêt, lancez simplement les commandes suivantes:

service mysql restart
mysql -u root -p

Avoir à nouveau très bien travaillé mysql

Hammad Raza
la source
Hé les amis, je courais partout sur le Web pour essayer de résoudre ce problème. Mon problème était que j'essayais de configurer Docker. Je voulais qu'il utilise le répertoire de données mysql qui était précédemment utilisé par mysql en dehors de docker ... cette commande ps était la meilleure!
Michael
3
Après avoir couru sur le Web pendant près de 4 heures et plus, cela a finalement fonctionné. Devrait être la meilleure réponse: +1:
Shivam Gaur
4
Le travail pour mysql.service a échoué car le processus de contrôle s'est terminé avec un code d'erreur. Voir "systemctl status mysql.service" et "journalctl -xe" pour plus de détails.
John Joe
1
Le travail pour mysql.service a échoué car le processus de contrôle s'est terminé avec un code d'erreur. Voir "systemctl status mysql.service" et "journalctl -xe" pour plus de détails.
Adib Aroui
Tnx, vous gagnez mon temps.
Aleksandur Atanasov,
41

La solution est bien plus simple.

  1. Tout d'abord, vous devez localiser (dans Terminal avec "sudo find / -type s") où mysql.sockse trouve votre fichier. Dans mon cas, c'était/opt/lampp/var/mysql/mysql.sock
  2. Lancez le terminal et lancez sudo Nautilus
    Cela démarre votre gestionnaire de fichiers avec des privilèges de super utilisateur
  3. Depuis Nautilus, accédez à l'emplacement de votre mysql.sockfichier
  4. Faites un clic droit sur le fichier et sélectionnez Créer un lien
  5. Renommez le fichier de liaison, mysqld.sockpuis faites un clic droit sur le fichier et coupez- le
  6. Allez dans /var/runet créez un dossier appelé mysqldet entrez-le
  7. Maintenant, faites un clic droit et collez le fichier de lien
  8. Voila! Vous aurez maintenant un mysqld.sockfichier sur /var/run/mysqld/mysqld.sock:)
Ioan Stef
la source
4
Comment localisez-vous votre fichier mysql.sock? J'ai essayé de trouver / -name 'mysql.sock' mais cela ne renvoie rien.
Matthew Lock
2
@MatthewLock Tout d'abord, assurez-vous que mysql est en cours d'exécution (par "ps aux | grep mysql"), sinon, aucun mysql.sock n'apparaîtrait. Deuxièmement, utilisez "sudo find / -type s", qui vous donne toutes les sockets de votre système pour localiser mysql.sock
narengi
35
Et si la sortie de sudo find / -type sn'en contient pas mysql.sock?
jeff
1
Ça marche. Mais je n'ai aucune idée pourquoi ces développeurs n'ont jamais fait ce travail ces dernières années?
Yi Jiang
2
S'il est difficile de savoir où se trouve mysql.sock via "find / -type s" - essayez d'utiliser la commande "mysql_config --socket". Vous pouvez l'installer avec sudo apt-get install libmysqlclient-dev
alexche8
26

Juste besoin de démarrer le service MySQL après l'installation:

Pour Ubuntu:

sudo service mysql start;

Pour CentOS ou RHEL:

sudo service mysqld start;
Pratik Patil
la source
Vérifiez d'abord par ceci sudo systemctl status mysql.serviceet sudo systemctl start mysql.service. Cela fonctionne pour moi
Byeongin Yoon
16

Il y a un bug sur Ubuntu avec MySQL 5.6 et 5.7 où var/run/mysqld/disparaîtrait chaque fois que le service MySQL s'arrêterait ou serait redémarré. Cela empêche l'exécution de MySQL. Trouvé cette solution de contournement, qui n'est pas parfaite, mais au moins, elle s'exécute après l'arrêt / le redémarrage:

mkdir /var/run/mysqld/
chown mysqld /var/run/mysqld/
bébé
la source
merci - corrigé pour moi, je dois refaire le répertoire et réinitialiser la propriété à chaque redémarrage du service mysql - je n'ai pas pu trouver l'erreur signalée officiellement ou j'aurais posté un lien ici :)
djoe
1
Je n'ai pas essayé cela, mais peut-être que cela vous aidera: Créez un nouveau fichier /etc/tmpfiles.d/mysql.conf: # systemd tmpfile settings for mysql # See tmpfiles.d(5) for details puis, d /var/run/mysqld 0755 mysql mysql - après le redémarrage, mysql devrait démarrer normalement. Cela vient de bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1435823 , commentaire 3. Si vous avez eu ce problème avec MySQL 5.7, veuillez commenter Launchpad. Plus il y a d'utilisateurs qui abordent le problème, plus il retiendra l'attention.
moto
A fonctionné pour moi ... a dû utiliser mysql comme nom d'utilisateur et non mysqld
Evan Parsons
L'ajout d'une ligne au /etc/tmpfiles.d/mysql.confcommentaire de chaque motard a résolu ce problème pour moi. Sur un OS Centos 7 et en utilisant mysql Ver 15.1 Distrib 10.3.11-MariaDB,.
turrican_34
Cela a résolu le problème pour moi.
shikata
14

D'accord, copiez et collez ces codes: cela devrait être fait dans le terminal, à l'intérieur d'un serveur, lorsque votre base de données mysql n'est pas correctement installée, et lorsque vous obtenez cette erreur: 'Impossible de se connecter au serveur MySQL local via le socket' / var / run / mysqld / mysqld.sock '(2)'.

Arrêtez MySql

sudo /etc/init.d/mysqld stop

Redémarrez-le ou démarrez-le

sudo /etc/init.d/mysqld restart or sudo /etc/init.d/mysqld start

Faites un lien comme celui-ci et donnez-le au système

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

Exécutez une installation sécurisée qui guide tout le processus que vous devez faire pour configurer mysql

/usr/bin/mysql_secure_installation
coolcool1994
la source
j'obtiens la même Can't connecterreur quand j'essaye d'exécuter la commande ci-dessus.
cjmling
Juste quelque chose que j'ai découvert, pour ceux qui exécutent Ubuntu. Si vous démarrez mysqld en utilisant /etc/init.d/mysqld start, vous rencontrerez quand même ce problème. Utilisez plutôt le service mysql start et tout ira bien. Furieux, mais je l'ai compris à la fin.
Adam Short
11

J'ai rencontré la même erreur et j'ai trouvé que c'était dû à la mise à niveau des packages, donc après le redémarrage de mon système, j'ai résolu l'erreur.

Je pense qu'en raison de la mise à jour des bibliothèques / packages SQL, cette erreur s'est produite, alors essayez ceci si vous effectuez une mise à niveau :)

Taimoor Changaiz
la source
1
Je l'ai fait après la réinstallation (ou la mise à niveau) et maintenant cela fonctionne. Plus de message de socket. Merci!
wraithie
8

Il y a beaucoup de raisons à ce problème, mais parfois redémarrez simplement le serveur mysql, cela résoudra le problème.

sudo service mysql restart
Leopathu
la source
7

Utiliser XAMPP sur ubuntu:

  1. Créez un dossier appelé mysqld dans le répertoire / var / run . Vous pouvez accomplir cela en utilisant la commande sudo mkdir /var/run/mysqld.

  2. Créez un lien symbolique vers le fichier mysql.sock créé par le serveur XAMPP lors de son démarrage. Vous pouvez utiliser la commande sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock.

Remarque: Le fichier mysql.sock est créé lorsque le serveur est démarré et supprimé lorsque le serveur est arrêté, donc parfois le lien que vous avez créé peut sembler rompu mais il devrait fonctionner tant que vous avez démarré le serveur en utilisant l'un sudo /opt/lampp/lampp startou l' autre ou tout autre veux dire.

  1. Démarrez le serveur s'il n'est pas déjà en cours d'exécution et essayez à nouveau d'exécuter votre programme.

Bonne chance! J'espère que vous vous en sortirez cette fois.

Robert Odoch
la source
@MohsinKhan allez à localhost / phpmyadmin et importez la base de données à partir de là
Robert Odoch
6

La réponse de l'étape de chargement de l'utilisateur a fonctionné pour moi. Il est parfois nécessaire de modifier le fichier dans la /etc/mysql/my.cnfligne d'ajout au client

[client]
password = your_mysql_root_password
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock
user3002884
la source
Cela me donne:mysql: unknown variable 'Host=127.0.0.1'
Splaktar
@Splaktar: il y a une faute de frappe. Hostdoivent être en minuscules hostet cela fonctionnera. De plus, cette solution a fonctionné pour moi.
Mohammad Faisal
Brillant - cela fonctionne pour moi et mon environnement docker - je n'ai eu qu'à ajuster l'ip qui est dans mon cas le docker mysql container ip 172.17.xx
InforMedic
6

* Erreur: 'Impossible de se connecter au serveur MySQL local via le socket' /var/run/mysqld/mysqld.sock '(2)'

solutions

enfin, désinstallez et réinstallez mysql. **

  • sudo apt-get supprimer mysql-server
  • sudo apt-get supprimer mysql-client
  • sudo apt-get supprimer mysql-common
  • sudo apt-get supprimer phpmyadmin

puis réinstallez par

  • sudo apt-get install mysql-server-5.6

Après cette opération, 164 Mo d'espace disque supplémentaire seront utilisés.

  • Voulez-vous continuer? [O / n] Y appuyez sur OUI pour les installations complètes

...... .......

  • Enfin, vous obtiendrez ces lignes ....

    Configuration de libhtml-template-perl (2.95-1) ...

    Configuration de mysql-common-5.6 (5.6.16-1 ~ exp1) ... Traitement des déclencheurs pour libc-bin (2.19-0ubuntu6) Traitement des déclencheurs pour ureadahead (0.100.0-16) ...

  • Puis

    root @ ubuntu1404: ~ # mysql -u root -p (pour chaque mot de passe que vous devez utiliser en premier)

  • Entrer le mot de passe:

  • Remarque: Le mot de passe saisi doit être le même que le mot de passe de temps d'installation de mysql (comme .root, system, admin, rahul etc ...)

    Tapez ensuite

  • USE rahul_db (nom de la base de données);

Merci.**

Buddheshwar Ojhar
la source
s'il vous plaît améliorer la qualité de la réponse
Mo.
Cela a fonctionné pour moi en raison de plusieurs versions de mysql installées. supprimer également mysql-server-5.6/5.5, mysql-client-5.6/5.5. Merci!
Luuk Skeur
obtenu E: Package 'mysql-server-5.6' has no installation candidate, il n'existe pas dans Ubuntu 18.04
juliocesar
6

Assurez-vous que le chemin d'accès de votre fichier socket inaccessible est le même que '/var/run/mysqld/mysqld.sock', sinon changez le chemin comme le vôtre. Arrêtez le mysqld

$ sudo /etc/init.d/mysqld stop

Si le processus est toujours en cours;

$ sudo pkill -9 mysqld

Supprimez le répertoire mysql où socket va créer. Pour moi, il ne permettait pas de retirer, j'ai donc dû retirer de force.

$ sudo mkdir -p /var/run/mysqld

Définissez la propriété dans le répertoire

$ sudo chown mysql:mysql /var/run/mysqld

Démarrez mysql

$ sudo /etc/init.d/mysql start

Essayer de se connecter à mysql

$ sudo mysql -u dbuser -p
Sadee
la source
Oui, c'est la même réponse que j'ai donnée le 14 février 19 à 11 h 56 (voir ci-dessous)
Ingo
Vous sauvez des vies.
Sahib Khan
5

Je pense que votre serveur MySQL n'a pas démarré. Démarrez donc le serveur à l'aide de l'une des commandes suivantes.

#services mysql start

ou

#/etc/init.d/mysql start
Susampath
la source
5

Solution temporaire

Peut-être que quelqu'un fait face à ce problème. J'utilise Mysql Workbench sur Ubuntu 14 et j'ai obtenu cette erreur.

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

Trouvez votre fichier socket en lançant sudo find / -type s, dans mon cas c'était/run/mysqld/mysqld.sock

Donc, je viens de créer un lien vers ce fichier dans le tmprépertoire.

sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
Bilal
la source
Comme vous pouvez le voir, l'emplacement du fichier se trouve sous le /tmpdossier, il sera donc supprimé à coup sûr. Vous pouvez modifier l' .sockemplacement du fichier. Voir la réponse @ user3002884.
Bilal
Je sais, je venais de terminer votre réponse pour que les autres utilisateurs sachent avant que la solution est juste temporaire, comme le dossier
Alex Burdusel
Vous m'avez sauvé la vie :)
Mashpy Rahman
4

vous pouvez trouver mysqld.sockdans /var/run/mysqldsi vous avez déjà installé mysql-server parsudo apt-get install mysql-server

Spencer
la source
4

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

en /etc/my.cnfajouter ces lignes:

[client]
socket=/var/lib/mysql/mysql.sock <= this path should be also same as is[mysqld]

Et redémarrez le service avec: service mysql restart

cela a fonctionné pour moi

Karan
la source
4

Cela a déjà été mentionné plusieurs fois, mais cela a fonctionné immédiatement pour moi:

service mysql restart

Jack BeNimble
la source
Intéressant en quoi cela diffère de l'utilisation de la simple commande "mysql"
luminol
3

Dans mon cas, deux processus mysqld étaient en cours d'exécution .. ont tué les processus facultatifs en utilisant pkill -9 mysqld

amindri
la source
J'avais besoin d'ajouter le 'sudo' tuer le processus.
noti
3

Si vous avez beaucoup de bases de données et de tables sur votre système, et si vous avez innodb_file_per_tabledéfini dans my.cnf, alors votre serveur mysql peut avoir manqué d'objets / fichiers ouverts (ou plutôt les descripteurs de ces objets) Définissez un nouveau nombre max avec

open-files-limit = 2048

et redémarrez mysql. Cette approche peut aider lorsque le socket n'est pas créé du tout, mais ce n'est peut-être pas vraiment le vrai problème, il y a un problème sous-jacent.

knb
la source
2

Je viens d'avoir ce problème sur Ubuntu 14.10

Tours qui mysql-servern'étaient plus installés (d'une manière ou d'une autre, ils avaient été supprimés) mais je ne pouvais pas simplement l'installer car il y avait des paquets cassés et des problèmes / conflits de dépendance.

Au final, j'ai dû réinstaller mysql

sudo apt-get remove mysql-client
sudo apt-get install mysql-server
Rosée
la source
2

Ma solution;

Ubuntu 18.04 (WSL)

/etc/mysql/my.cnf

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306

J'ai changé de port. Ça a marché pour moi. Vous pouvez écrire un autre port. Exemple 3355

omfaer
la source
2

Pourquoi obtenir cette erreur

J'ai reçu de nouvelles mises à jour des bibliothèques mysql, j'ai donc mis à jour mon système d'exploitation Kubuntu après avoir obtenu ces erreurs.


Commandes que j'ai essayées et comment je les ai corrigées.

MySql-server fonctionne correctement mais quand j'ai essayé de connecter son don

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'.

J'ai vérifié /var/run/mysqld/mysqld.sock'.ce répertoire. Mes fichiers n'existaient pas.

J'ai également essayé ces commandes pour me connecter, mais cela n'a pas fonctionné pour moi.

 mysql -h 127.0.0.1 -P 3306 -u root -p

 sudo service mysql start

Après avoir perdu environ 2 heures, j'ai trouvé la solution

sudo apt-get clean
sudo apt-get update
sudo apt-get upgrade -f

Après cela, tout s'est arrangé pour moi.

Muhammad Faizan Fareed
la source
Cela m'a aidé à résoudre le problème. Je ne comprends pas comment est-ce lié au problème de
chaussette que
1

Modification du hostà 127.0.0.1travaillé pour moi.

Modifiez le fichier /etc/mysql/my.cnfet ajoutez la ligne mentionnée ci-dessous à la section:client

[client]
port  = 3306
host  = 127.0.0.1
socket  = /var/lib/mysql/mysql.sock

Une fois que vous en avez terminé. Exécutez la commande suivante.

sudo service mysql start
Dulith De Costa
la source
Ce mon ami m'a aidé :)
Bhargav Nanekalva
@NBhargav je suis tellement heureux que vous ayez pu résoudre votre problème .. Cheers mon pote .. 😇😇
Dulith De Costa
1

Je vérifierais également la configuration mysql. Je rencontrais ce problème avec mon propre serveur mais j'étais un peu trop précipité et j'ai mal configuré la taille innodb_buffer_pool_size pour ma machine.

innodb_buffer_pool_size = 4096M

Il fonctionne généralement bien jusqu'en 2048, mais je suppose que je n'ai pas la mémoire nécessaire pour prendre en charge 4 concerts.

J'imagine que cela pourrait également arriver avec d'autres paramètres de configuration mysql.

Greg
la source
1

J'ai eu un problème similaire sur un CentOS VPS. Si MySQL ne démarre pas ou continue de planter juste après son démarrage, essayez ces étapes:

1) Trouvez le fichier my.cnf (le mien était situé dans /etc/my.cnf) et ajoutez la ligne:

innodb_force_recovery = X

remplacer X par un nombre de 1 à 6, en commençant par 1 puis en incrémentant si MySQL ne démarre pas. La définition de 4, 5 ou 6 peut supprimer vos données, alors faites attention et lisez http://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html avant.

2) Redémarrez le service MySQL. Seul SELECT s'exécutera et c'est normal à ce stade.

3) Videz toutes vos bases de données / schémas avec mysqldump une par une, ne compressez pas les vidages car vous devrez les décompresser plus tard de toute façon.

4) Déplacez (ou supprimez!) Uniquement les répertoires du bd dans / var / lib / mysql, en préservant les fichiers individuels à la racine.

5) Arrêtez MySQL puis décommentez la ligne ajoutée en 1). Démarrez MySQL.

6) Récupérez tous les bd vidés en 3).

Bonne chance!

Heitor
la source
1

Essayez ce qui suit à l'invite du terminal:

sudo mysql

Une fois que cela vous permet d'entrer, vous pouvez créer un nouvel utilisateur et accorder les privilèges que vous souhaitez sur la base de données spécifique à laquelle ils ont besoin d'accéder.

Mysql 5.7 a changé certaines choses et utilise par défaut le plugin auth_socket (par opposition à mysql_native_password) pour root pour protéger le compte contre le piratage. Vous pouvez remplacer cela en définissant le champ plugin pour root, mais à moins d'avoir une très bonne raison, vous ne devriez probablement pas contourner la protection. Surtout quand sudo mysqlc'est plus facile que de mysql -u root -ptoute façon.

J'ai découvert cette information - de tous les endroits - sur un site d'aide Raspberry Pi . A fonctionné comme un charme après que Lubuntu 18.04 m'ait énervé pendant quelques heures.

JohanTux
la source
1

Créez d'abord dir / var / run / mysqld

avec commande:

mkdir -p /var/run/mysqld

puis ajoutez des droits au répertoire

chown mysql:mysql /var/run/mysqld

après cet essai

mysql -u root
Ingo
la source
1

J'ai eu exactement le même problème. Après avoir lutté pendant une heure, j'ai trouvé un moyen de le corriger sans réinstaller mysql-common, mysql-client, mysql-server.

Tout d'abord, allez dans "/ var / run / mysqld". Vous constaterez que le mysql.sock n'existe pas. Supprimez simplement l'intégralité du répertoire mysqld et recréez-le et fournissez-lui les privilèges nécessaires.

# rm -rf /var/run/mysqld && mkdir /var/run/mysqld && chown mysql /var/run/mysqld/

Maintenant, tuez le processus mysql dans son intégralité. Il peut être possible qu'il vous affiche "en attente de nettoyage de page" lors de l'exécution de la commande "/etc/init.d/mysql status" même après l'arrêt du service.

Pour fermer complètement le service, utilisez

# pkill -9 mysqld

Une fois le processus interrompu, essayez de le redémarrer à l'aide de

# /etc/init.d/mysql start

Et vous verrez que ça marche bien! Et il n'y aura pas non plus de problème à l'arrêter.

xscorp7
la source