Je reçois le message d'erreur suivant lorsque j'essaie de me connecter à mysql:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
Existe-t-il une solution à cette erreur? Quelle pourrait être la raison derrière cela?
Êtes-vous connecté à "localhost" ou à "127.0.0.1"? J'ai remarqué que lorsque vous vous connectez à "localhost", le connecteur 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 n’est pas activé/ne fonctionne pas.
Assurez-vous que votre service mysql est en cours d'exécution
service mysqld start
Ensuite, essayez l’un des suivants:
(si vous n'avez pas défini de mot de passe pour mysql)
mysql -u root
si vous avez déjà défini le mot de passe
mysql -u root -p
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 changer votre permission dans le dossier mysql. Si vous travaillez localement, vous pouvez essayer:
Sudo chmod -R 777 /var/lib/mysql/
cela l'a résolu pour moi
Le serveur MySQL n'est pas en cours d'exécution ou ce n'est pas l'emplacement de son fichier de socket (consultez my.cnf).
Il est fort probable que mysql.sock
n'existe pas dans /var/lib/mysql/
.
Si vous trouvez le même fichier à un autre emplacement, cliquez sur le lien suivant:
Par exemple: je l'ai dans /data/mysql_datadir/mysql.sock
Basculez l'utilisateur sur mysql et exécutez-le comme indiqué ci-dessous:
su mysql
ln -s /data/mysql_datadir/mysql.sock /var/lib/mysql/mysql.sock
Cela a résolu mon problème
Dans mon cas, j'ai déplacé le fichier de socket vers un autre emplacement dans /etc/my.cnf
De /var/lib/mysql/mysql.sock
à /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é. Les diagnostics en cours montreront le chemin du socket correct. par exemple ps 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 le même socket line dans la section [client]
de mysql config.
Si vous utilisez un système RHEL récent, vous devrez peut-être démarrer mariadb (une base de données open source mysql) à la place de la base de données 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:
mysql -u root -p
Vérifiez si votre service mysqld est en cours d'exécution ou non. Si ce n'est pas le cas, démarrez le service.
Si votre problème n'est pas résolu, cherchez /etc/my.cnf
et modifiez comme suit, où vous voyez une ligne commençant par socket
. Faites une sauvegarde de ce fichier avant de faire cette mise à jour.
socket=/var/lib/mysql/mysql.sock
Changer en
socket=/opt/lampp/var/mysql/mysql.sock -u root
Il suffit de modifier /etc/my.cnf
Ajouter les lignes suivantes à my.cnf
[mysqld]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Redémarrez mysql et reconnectez-vous
mysql -u utilisateur -p mot de passe base de données -h hôte;
Assurez-vous de disposer de suffisamment d'espace dans /var
. Si Mysql Demon n'est pas capable d'écrire des informations supplémentaires sur le lecteur, le serveur mysql ne démarre pas et conduit à l'erreur Can'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.
MariaDB, un fork de MySQL développé par la communauté, est devenu l'implémentation par défaut de MySQL dans de nombreuses distributions.
Alors commencez par commencer,
$ Sudo systemctl start mariadb
Si cela échoue, essayez plutôt,
$ Sudo systemctl start mysqld
Ensuite, pour démarrer mysql,
$ mysql -u root -p
À partir d’aujourd’hui, le paquet dans Fedora s’appelle mariadb
Dans Ubuntu, il s’appelle mariadb-server
.
Donc, vous devrez peut-être l'installer s'il n'est pas déjà installé sur votre système.
Voici ce qui a fonctionné pour moi:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
service mysqld restart
Veuillez vérifier si un autre service mysql est en cours d'exécution.
Assurez-vous que vous avez démarré le serveur:
mysql.server start
Puis connectez-vous avec l'utilisateur root:
mysql -uroot
essayer
echo 0 > /selinux/enforce
si vous modifiez des fichiers dans/var/lib/mysql [comme copier ou remplacer cela], vous devez définir le propriétaire des fichiers sur mysql, ce qui est si important si le redémarrage de mariadb.service est échoué
chown -R mysql: mysql/var/lib/mysql/*
chmod -R 700/var/lib/mysql/*
Si votre mysql fonctionnait auparavant et qu'il s'est arrêté brusquement, il vous suffit de "redémarrer" le serveur.
Était confronté à ce problème sur mon CentPS VPS .->
Était constamment
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(2)
J'ai essayé toutes les techniques, puis le redémarrage du serveur a résolu les problèmes ->
shutdown -r now
J'espère que cela t'aides !!
Assurez-vous que vous avez correctement installé le serveur MySQL. J'ai rencontré cette erreur plusieurs fois et je pense que le débogage est compliqué à partir du socket. Je veux dire qu'il pourrait être plus facile de le réinstaller.
Si vous utilisez CentOS 7, voici comment l’installer correctement:
Tout d’abord, ajoutez la source de la communauté mysqlyum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
Ensuite, vous pouvez l'installer par yum install mysql-community-server
Démarrez-le avec systemctl: systemctl start mysqld
Commencez par entrer "service mysqld start" et connectez-vous
Une façon de reproduire cette erreur: Si vous vouliez vous connecter à un serveur étranger mais vous connecter à un 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 ~ $
Donc vous devez 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 end with ; or \g.
Your MySQL connection id is 235
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 |
+-------------------------+
3 rows in set (0.00 sec)
mysql> exit
Bye
eric@dev ~ $
Mon problème était que j'ai installé mysql avec succès et cela a bien fonctionné.
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 solution a résolu mon problème et mysql était à nouveau opérationnel:
Connectez-vous en tant que root:
Sudo su -
Courir:
systemctl stop mysqld.service
systemctl start mysqld.service
systemctl enable mysqld.service
Test en tant que root:
mysql -u root -p
mysql devrait maintenant être opérationnel.
J'espère que cela peut aider quelqu'un d'autre aussi.
Notez que bien que mysql lit les informations sur l’emplacement du fichier de socket dans le fichier my.cnf, le programme mysql_secure_installation ne semble pas le faire parfois correctement.
Donc, si vous êtes comme moi et que vous mélangez les choses au moment de l'installation, vous pourriez vous retrouver dans une situation où vous pouvez vous connecter à la base de données avec mysql, mais la chose ne peut être sécurisée (n'utilisez pas ce script de toute façon).
Pour résoudre ce problème, la suggestion de sreddy fonctionne bien: créez un lien symbolique à partir de l'endroit où le script s'attend à ce que le socket soit réellement. Exemple:
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
(J'utilise/tmp/comme emplacement par défaut pour les sockets)
C'est peut-être une suggestion stupide, mais assurez-vous à 100% que votre base de données est toujours hébergée sur localhost. Par exemple, si un administrateur réseau a choisi (ou modifié) l'hébergement Amazon DB, vous aurez plutôt besoin de ce nom d'hôte!
Je devais désactiver explicit_defaults_for_timestamp
à partir de my.cnf.
Si vous êtes dans le shell de sf.net , essayez:
mysql --Host=mysql-{LETTER} --user={LETTER}{GROUP ID}admin -p
Modifiez {LETTER} et {GROUP ID} comme indiqué dans votre base de données MySQL du profil administrateur du projet.
C'est un problème si vous manquez d'espace disque .. La solution consiste à libérer de l'espace sur le disque dur.
S'il vous plaît lisez plus pour avoir l'explication:
Si vous utilisez MySQL sous LINUX, vérifiez l’espace libre sur le disque dur à l’aide de la commande disk free:
df
si vous obtenez quelque chose comme ça:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 5162828 4902260 0 100% /
udev 156676 84 156592 1% /dev
/dev/sda3 3107124 70844 2878444 3% /home
Alors c'est le problème et maintenant vous avez la solution!
Depuis mysql.sock veut être créé dans le dossier mysql qui est presque toujours sous le dossier racine ne pourrait pas le réaliser car le manque d’espace.
Si vous donnez périodiquement la commande ls dans 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'allouer avec le ls pour frapper une instance avec le fichier mysql.sock dans le dossier).
Cela est dû à un espace disque insuffisant.
J'espère que j'aiderai certaines personnes !!!! Merci!
Dans mon cas, j'importais une nouvelle base de données et je ne pouvais plus me connecter par la suite. Finalement, j'ai réalisé que c'était un problème d'espace.
Ainsi, vous pouvez supprimer la dernière base de données et développer 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
Cela a fonctionné pour moi avec les changements suivants
Quel que soit le chemin d'accès au socket mentionné dans [mysqld] et identique dans [client] dans my.cnf
[mysqld] socket =/var/lib/mysql/mysql.sock
[client] socket =/var/lib/mysql/mysql.sock
a rencontré ce problème en essayant de connecter mysql dans le client SSH, l’ajout du chemin de socket à la commande a été utile lorsque la commutation entre les sockets est nécessaire.
> mysql -u user -p --socket=/path/to/mysql5143.sock
Essayez d'abord 2, 3 solutions. L'erreur est stil popup & Si vous ne pouvez pas trouver /var/lib/mysql/mysql.sock
find /var/ -name mysql.sock
Vérifiez l'espace disponible dans/var /
df
Si le répertoire est plein, supprimez certains fichiers/répertoires inutiles
rm /var/cache/*
Votre problème sera probablement réglé maintenant.