Vous connectez-vous à "localhost" ou "127.0.0.1"? J'ai remarqué que lorsque vous vous connectez à "localhost", le connecteur de socket est utilisé, mais lorsque vous vous connectez à "127.0.0.1", le connecteur TCP / IP est utilisé. Vous pouvez essayer d'utiliser "127.0.0.1" si le connecteur de socket n'est pas activé / ne fonctionne pas.
Dans ce cas, vous devriez probablement vérifier si votre serveur MYSQL fonctionne réellement.
Jan Thomä
3
Vous pouvez également forcer l'utilisation d'une socket avec le paramètre socket (-S avec / usr / bin / mysql) et forcer TCP / IP en fournissant un port (-P avec / usr / bin / mysql.)
Kaoru
L'utilisation d'un nom de réseau complet autre que localhost a fonctionné pour moi. Assurez-vous simplement qu'il est déclaré dans le fichier «hosts» côté client.
Fabien Haddadi
2
Remarque pour les utilisateurs de cygwin: si le client cygwin mysql essaie de se connecter à un serveur mysql WAMP local par exemple, utilisez -h <nom d'hôte autre que localhost>. N'essayez pas de créer un fichier mysql.sock et de le déclarer dans le fichier my.cnf, cela ne fonctionnera pas.
Fabien Haddadi
Un mauvais nom d'hôte m'a donné exactement la même erreur. La lecture du /etc/hostsfichier dans mon conteneur Docker m'a montré que le nom d'hôte MySql était mysql. L'utilisation de ce même nom d'hôte dans ma configuration de connexion a résolu le problème.
Stephane
188
Assurez-vous que votre service mysql fonctionne
service mysqld start
Ensuite, essayez l'une des opérations suivantes:
(si vous n'avez pas défini de mot de passe pour mysql)
Ce fut la réponse pour moi. Puisque j'utilise mariadb, la solution était d'exécuter ce qui suit: "sudo systemctl start mariadb". Tout allait bien après ça.
mohsen
Donnez une médaille à @Zahra
Ahmed C
28
Si votre fichier my.cnf (généralement dans le dossier etc) est correctement configuré avec
socket=/var/lib/mysql/mysql.sock
vous pouvez vérifier si mysql fonctionne avec la commande suivante:
mysqladmin -u root -p status
essayez de modifier votre autorisation sur le dossier mysql. Si vous travaillez localement, vous pouvez essayer:
renommer mysql.sock en quelque chose d'autre, puis redémarrer mysqld ("service mysqld restart"), puis renommer autre chose en mysql.sock a fonctionné pour moi. Une légère variation sur cette réponse, alors merci.
Analyse floue
Cette réponse peut aider à localiser le mysql.sockfichier
Nobita
15
Si vous êtes sur un RHEL récent, vous devrez peut-être démarrer mariadb (un db mysql open source) au lieu du db mysql:
yum remove mysql
yum -y install mariadb-server mariadb
service mariadb start
Vous devriez alors pouvoir accéder à mysql de la manière habituelle:
Pour info, cela fonctionne aussi pour CentOS 8.1. Après l'installation mariadb-serveret mariadb, n'oubliez pas d'exécuter mysql_secure_installationpour nettoyer certains paramètres dangereux par défaut.
Dio Phung
13
Dans mon cas, j'ai déplacé le fichier socket vers un autre emplacement à l'intérieur /etc/my.cnf
de /var/lib/mysql/mysql.sockvers/tmp/mysql.sock
Même après avoir redémarré le service mysqld, je vois toujours le message d'erreur lorsque j'essaie de me connecter.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Le problème vient de la façon dont le client est configuré. L'exécution des diagnostics affiche en fait le chemin de socket correct. par exempleps aux | grep mysqld
Travaux:
mysql -uroot -p -h127.0.0.1
mysql -uroot -p --socket=/tmp/mysql.sock
Ne marche pas:
mysql -uroot -p
mysql -uroot -p -hlocalhost
Vous pouvez résoudre ce problème en ajoutant la même ligne de socket dans la [client]section à l'intérieur de la configuration mysql.
La seule bonne réponse. Je me demande pourquoi il n'a pas assez de votes positifs.
CentAu
11
Vérifiez si votre service mysqld fonctionne ou non, sinon, lancez le service.
Si votre problème n'est pas résolu, recherchez /etc/my.cnfet modifiez comme suit, où vous voyez une ligne commençant par socket. Faites une sauvegarde de ce fichier avant de faire cette mise à jour.
Assurez-vous qu'il vous reste suffisamment d'espace /var . Si le démon Mysql n'est pas en mesure d'écrire des informations supplémentaires sur le lecteur, le serveur mysql ne démarre pas et cela conduit à l'erreurCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Pensez à utiliser
expire_logs_days =10
max_binlog_size =100M
Cela vous aidera à réduire l'utilisation du disque.
Merci, j'utilise mysql sur oracle virtualbox et quand j'ai fait un vidage de mon bd, j'ai manqué d'espace et je n'ai pas pu démarrer le serveur mysql, quand j'ai supprimé le fichier de vidage j'ai pu redémarrer le serveur mysql.
JayCee
1
Cela l'a résolu pour moi. J'ai défini innodb_buffer_pool_size à une valeur très élevée pour les environnements de production et cela a fait planter mysql sur ma machine virtuelle.
Benjamin Brizzi
1
J'ai eu ce problème lors de l' utilisation phabricator et la solution a été de changer innodb_buffer_pool_sizedans my.cnf. Le mettre à une petite valeur comme innodb_buffer_pool_size = 50Mest un bon test pour écarter cette hypothèse;)
Yercalamarino
C'était le problème, j'ai tout vérifié sauf l'espace disque. Libéré de l'espace depuis / var, il est revenu!
Nadjib Mami
5
Voici ce qui a fonctionné pour moi:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
si vous changez des fichiers dans / var / lib / mysql [comme copier ou remplacer cela], vous devez définir le propriétaire des fichiers sur mysql c'est si important si le redémarrage de mariadb.service a échoué
Qu'est-ce que tu veux dire? veuillez lire la FAQ avant de poser une question ici
Freak
Il a été répondu avec succès à cette question il y a trois ans. Cette réponse exacte a été donnée plus complètement l'année dernière.
Cairnarvon
2
Veuillez vous assurer d'avoir installé correctement le serveur MySQL, j'ai rencontré cette erreur plusieurs fois et je pense que c'est compliqué à déboguer à partir du socket, je veux dire qu'il pourrait être plus facile de le réinstaller.
Si vous utilisez CentOS 7, voici la bonne façon de l'installer:
Tout d'abord, ajoutez la source de la communauté mysql yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Ensuite, vous pouvez l'installer en yum install mysql-community-server
Démarrez-le avec systemctl: systemctl start mysqld
Notez que tandis que mysql lit les informations de l'emplacement du fichier socket à partir du fichier my.cnf, le programme mysql_secure_installation semble parfois ne pas le faire correctement.
Donc, si vous êtes comme moi et que vous mélangez les choses au moment de l'installation, vous pourriez vous retrouver dans la situation où vous pouvez vous connecter à la base de données avec mysql très bien, mais la chose ne peut pas être sécurisée (ne pas utiliser ce script de toute façon).
Pour résoudre ce problème, la suggestion de sreddy fonctionne bien: créez un lien logiciel d'où le script s'attendrait à ce que le socket se trouve réellement. Exemple:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(J'utilise / tmp / comme emplacement par défaut pour les sockets)
Une façon de reproduire cette erreur: si vous vouliez vous connecter à un serveur étranger mais vous connecter au serveur local inexistant:
eric@dev ~$ mysql -u dev -p
Enter password:
ERROR 2002(HY000): Can't connect to local MySQL server through
socket '/var/lib/mysql/mysql.sock'(2)
eric@dev ~$
Vous devez donc spécifier l'hôte comme ceci:
eric@dev ~$ mysql --host=yourdb.yourserver.com -u dev -p
Enter password:
Welcome to the MySQL monitor. Commands endwith;or\g.
Your MySQL connection id is235
Server version:5.6.19 MySQL Community Server (GPL)
Type 'help;'or'\h'for help. Type '\c'to clear the current input statement.
mysql> show databases;+-------------------------+|Database|+-------------------------+| information_schema || mysql || performance_schema |+-------------------------+3rowsinset(0.00 sec)
mysql>exit
Bye
eric@dev ~$
Cela peut être une suggestion stupide, mais assurez-vous à 100% que votre base de données est toujours hébergée chez localhost. Par exemple, si un administrateur réseau a choisi (ou changé pour) l'hébergement Amazon DB, vous aurez besoin de ce nom d'hôte à la place!
J'utilise le fournisseur d'hébergement 1and1 et j'ai obtenu cette erreur après ssh-ing à l'hôte. Le correctif consistait simplement à fournir le nom d'hôte "mysql -u dbo70123521 -p --host db70313321.db.1and1.com db703133520"
rob
1
Dans mon cas, j'importais une nouvelle base de données et je n'ai pas pu me reconnecter par la suite. Finalement, j'ai réalisé que c'était un problème d'espace.
Vous pouvez donc supprimer la dernière base de données et étendre votre disque dur ou ce que j'ai fait, restauré un instantané de ma machine virtuelle.
a rencontré ce problème lors de la tentative de connexion de mysql dans le client SSH, a trouvé que l'ajout du chemin de socket à la commande était utile lors du basculement entre les sockets.
> mysql -u user-p --socket=/path/to/mysql5143.sock
Il s'agit d'un problème si vous manquez d'espace disque. La solution consiste à libérer de l'espace sur le disque dur.
Veuillez lire la suite pour avoir l'explication:
Si vous utilisez MySQL sous LINUX, vérifiez l'espace libre du disque dur avec la commande disk free:
df
si vous obtenez quelque chose comme ça:
Filesystem 1K-blocks Used Available Use% Mounted on/dev/sda2 516282849022600100%/
udev 156676841565921%/dev
/dev/sda3 31071247084428784443%/home
Alors c'est le problème et maintenant vous avez la solution!
Étant donné que mysql.sock veut être créé dans le dossier mysql qui se trouve presque toujours sous le dossier racine, il n'a pas pu y parvenir par manque d'espace.
Si vous donnez périodiquement la commande ls sous le répertoire mysql (à openSUSE 11.1 se trouve dans / var / lib / mysql) vous obtiendrez quelque chose comme:
hostname:/var/lib/mysql #.protected IT files ibdata1 mysqld.log systemtemp
.tmp NEWS greekDB mysql mysqld.pid test
ARXEIO TEMP1 ib_logfile0 mysql.sock polis
DATING deisi ib_logfile1 mysql_upgrade_info restore
Le fichier mysql.sock apparaissant et disparaissant souvent (vous devez essayer d'attribuer avec le ls pour frapper une instance avec le fichier mysql.sock sur le dossier).
Cela est dû au manque d'espace disque.
J'espère que j'aiderai certaines personnes !!!! Merci!
Réponses:
Vous connectez-vous à "localhost" ou "127.0.0.1"? J'ai remarqué que lorsque vous vous connectez à "localhost", le connecteur de socket est utilisé, mais lorsque vous vous connectez à "127.0.0.1", le connecteur TCP / IP est utilisé. Vous pouvez essayer d'utiliser "127.0.0.1" si le connecteur de socket n'est pas activé / ne fonctionne pas.
la source
/etc/hosts
fichier dans mon conteneur Docker m'a montré que le nom d'hôte MySql étaitmysql
. L'utilisation de ce même nom d'hôte dans ma configuration de connexion a résolu le problème.Assurez-vous que votre service mysql fonctionne
Ensuite, essayez l'une des opérations suivantes:
(si vous n'avez pas défini de mot de passe pour mysql)
si vous avez déjà défini un mot de passe
la source
service mariadb start
parce que mariadb.org/debian-9-released-mariadb-mysql-variantSi votre fichier my.cnf (généralement dans le dossier etc) est correctement configuré avec
vous pouvez vérifier si mysql fonctionne avec la commande suivante:
essayez de modifier votre autorisation sur le dossier mysql. Si vous travaillez localement, vous pouvez essayer:
qui l'a résolu pour moi
la source
Le serveur MySQL n'est pas en cours d'exécution, ou ce n'est pas l'emplacement de son fichier socket (consultez my.cnf).
la source
N'existe probablement
mysql.sock
pas en/var/lib/mysql/
.Si vous trouvez le même fichier dans un autre emplacement, créez un lien symbolique:
Par exemple: je l'ai dans
/data/mysql_datadir/mysql.sock
Basculez l'utilisateur vers mysql et exécutez comme mentionné ci-dessous:
Cela a résolu mon problème
la source
mysql.sock
fichierSi vous êtes sur un RHEL récent, vous devrez peut-être démarrer mariadb (un db mysql open source) au lieu du db mysql:
Vous devriez alors pouvoir accéder à mysql de la manière habituelle:
la source
mariadb-server
etmariadb
, n'oubliez pas d'exécutermysql_secure_installation
pour nettoyer certains paramètres dangereux par défaut.Dans mon cas, j'ai déplacé le fichier socket vers un autre emplacement à l'intérieur
/etc/my.cnf
de/var/lib/mysql/mysql.sock
vers/tmp/mysql.sock
Même après avoir redémarré le service mysqld, je vois toujours le message d'erreur lorsque j'essaie de me connecter.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Le problème vient de la façon dont le client est configuré. L'exécution des diagnostics affiche en fait le chemin de socket correct. par exemple
ps aux | grep mysqld
Travaux:
Ne marche pas:
Vous pouvez résoudre ce problème en ajoutant la même ligne de socket dans la
[client]
section à l'intérieur de la configuration mysql.la source
Modifiez simplement
/etc/my.cnf
Ajouter les lignes suivantes àmy.cnf
Redémarrez mysql et reconnectez-vous
la source
Vérifiez si votre service mysqld fonctionne ou non, sinon, lancez le service.
Si votre problème n'est pas résolu, recherchez
/etc/my.cnf
et modifiez comme suit, où vous voyez une ligne commençant parsocket
. Faites une sauvegarde de ce fichier avant de faire cette mise à jour.Changer pour
la source
MariaDB, un fork de MySQL développé par la communauté, est devenu l'implémentation par défaut de MySQL dans de nombreuses distributions.
Vous devez donc commencer,
Si cela échoue, essayez plutôt,
Ensuite, pour démarrer mysql,
À ce jour, dans Fedora, le package est nommé
mariadb
Et dans Ubuntu, il est appelémariadb-server
.Vous devrez donc peut-être l'installer s'il n'est pas déjà installé sur votre système.
la source
Assurez-vous qu'il vous reste suffisamment d'espace
/var
. Si le démon Mysql n'est pas en mesure d'écrire des informations supplémentaires sur le lecteur, le serveur mysql ne démarre pas et cela conduit à l'erreurCan't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Pensez à utiliser
Cela vous aidera à réduire l'utilisation du disque.
la source
innodb_buffer_pool_size
dansmy.cnf
. Le mettre à une petite valeur commeinnodb_buffer_pool_size = 50M
est un bon test pour écarter cette hypothèse;)Voici ce qui a fonctionné pour moi:
la source
Veuillez vérifier si un autre service mysql est en cours d'exécution.
la source
Assurez-vous d'avoir démarré le serveur:
Connectez-vous ensuite avec l'utilisateur root:
la source
Si votre mysql fonctionnait précédemment et s'est arrêté soudainement, "redémarrez" le serveur.
Était confronté à ce problème sur mon CentOS VPS .->
Recevait constamment
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
J'ai essayé toutes les techniques, enfin le redémarrage du serveur a résolu les problèmes ->
shutdown -r now
J'espère que cela t'aides !!
la source
essayer
la source
si vous changez des fichiers dans / var / lib / mysql [comme copier ou remplacer cela], vous devez définir le propriétaire des fichiers sur mysql c'est si important si le redémarrage de mariadb.service a échoué
la source
Entrez d'abord "service mysqld start" et connectez-vous
la source
Veuillez vous assurer d'avoir installé correctement le serveur MySQL, j'ai rencontré cette erreur plusieurs fois et je pense que c'est compliqué à déboguer à partir du socket, je veux dire qu'il pourrait être plus facile de le réinstaller.
Si vous utilisez CentOS 7, voici la bonne façon de l'installer:
Tout d'abord, ajoutez la source de la communauté mysql
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Ensuite, vous pouvez l'installer en
yum install mysql-community-server
Démarrez-le avec systemctl:
systemctl start mysqld
la source
Mon problème était que j'avais installé mysql avec succès et cela fonctionnait bien.
Mais un jour, la même erreur s'est produite.
Impossible de se connecter au serveur MySQL local via le socket '/var/lib/mysql/mysql.sock' (2)
Et aucun fichier mysql.sock n'existait.
Cette sollution a résolu mon problème et mysql était de nouveau opérationnel:
Connectez-vous en tant que root:
Courir:
Testez en tant que root:
mysql devrait maintenant être opérationnel.
J'espère que cela peut aussi aider quelqu'un d'autre.
la source
Notez que tandis que mysql lit les informations de l'emplacement du fichier socket à partir du fichier my.cnf, le programme mysql_secure_installation semble parfois ne pas le faire correctement.
Donc, si vous êtes comme moi et que vous mélangez les choses au moment de l'installation, vous pourriez vous retrouver dans la situation où vous pouvez vous connecter à la base de données avec mysql très bien, mais la chose ne peut pas être sécurisée (ne pas utiliser ce script de toute façon).
Pour résoudre ce problème, la suggestion de sreddy fonctionne bien: créez un lien logiciel d'où le script s'attendrait à ce que le socket se trouve réellement. Exemple:
(J'utilise / tmp / comme emplacement par défaut pour les sockets)
la source
Cela a fonctionné pour moi avec les changements suivants
Quel que soit le chemin pour socket est mentionné dans [mysqld] et identique dans [client] dans my.cnf et redémarrez mysql
[mysqld] socket = / var / lib / mysql / mysql.sock
[client] socket = / var / lib / mysql / mysql.sock
la source
Une façon de reproduire cette erreur: si vous vouliez vous connecter à un serveur étranger mais vous connecter au serveur local inexistant:
Vous devez donc spécifier l'hôte comme ceci:
la source
Cela peut être une suggestion stupide, mais assurez-vous à 100% que votre base de données est toujours hébergée chez localhost. Par exemple, si un administrateur réseau a choisi (ou changé pour) l'hébergement Amazon DB, vous aurez besoin de ce nom d'hôte à la place!
la source
Dans mon cas, j'importais une nouvelle base de données et je n'ai pas pu me reconnecter par la suite. Finalement, j'ai réalisé que c'était un problème d'espace.
Vous pouvez donc supprimer la dernière base de données et étendre votre disque dur ou ce que j'ai fait, restauré un instantané de ma machine virtuelle.
Juste au cas où quelqu'un pense que c'est utile
la source
a rencontré ce problème lors de la tentative de connexion de mysql dans le client SSH, a trouvé que l'ajout du chemin de socket à la commande était utile lors du basculement entre les sockets.
la source
Il s'agit d'un problème si vous manquez d'espace disque. La solution consiste à libérer de l'espace sur le disque dur.
Veuillez lire la suite pour avoir l'explication:
Si vous utilisez MySQL sous LINUX, vérifiez l'espace libre du disque dur avec la commande disk free:
si vous obtenez quelque chose comme ça:
Alors c'est le problème et maintenant vous avez la solution!
Étant donné que mysql.sock veut être créé dans le dossier mysql qui se trouve presque toujours sous le dossier racine, il n'a pas pu y parvenir par manque d'espace.
Si vous donnez périodiquement la commande ls sous le répertoire mysql (à openSUSE 11.1 se trouve dans / var / lib / mysql) vous obtiendrez quelque chose comme:
Le fichier mysql.sock apparaissant et disparaissant souvent (vous devez essayer d'attribuer avec le ls pour frapper une instance avec le fichier mysql.sock sur le dossier).
Cela est dû au manque d'espace disque.
J'espère que j'aiderai certaines personnes !!!! Merci!
la source
J'ai dû désactiver
explicit_defaults_for_timestamp
mon.cnf.la source
Essayez les 2, 3 premières solutions. L'erreur est toujours popup et si vous ne trouvez pas
/var/lib/mysql/mysql.sock
Vérifiez l'espace disponible dans / var /
Si le répertoire est plein, supprimez certains fichiers / répertoires inutiles
Votre problème sera probablement trié maintenant.
la source
Si vous êtes dans le shell de sf.net , essayez:
Modifiez {LETTRE} et {GROUP ID} comme indiqué dans votre base de données MySQL du profil d'administrateur de projet.
la source