web-dev-qa-db-fra.com

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

J'ai installé LAMP sur buntu 12.04 LTS (Pangolin précis), puis défini le mot de passe root sur phpMyAdmin . J'ai oublié le mot de passe et je n'arrive pas à me connecter. Lorsque j'essaie de changer de mot de passe via un terminal, je reçois:

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

Comment puis-je réparer cela? Je ne parviens pas à ouvrir LAMP, à le désinstaller ou à le réinstaller.

371
sushmit sarmah

Une fois, j'ai eu ce problème et je l'ai résolu en installant mysql-server, alors assurez-vous d'avoir installé le mysql-server et non le mysql-client ou quelque chose d'autre.

Cette erreur signifie que le fichier /var/run/mysqld/mysqld.sock n'existe pas. Si vous n'avez pas installé mysql-server, le fichier n'existerait pas. Mais si le mysql-server est déjà installé et en cours d'exécution, vous devez vérifier les fichiers de configuration.

Les fichiers de configuration sont:

/etc/my.cnf
/etc/mysql/my.cnf
/var/lib/mysql/my.cnf

Dans /etc/my.cnf, la configuration du fichier de socket peut être /tmp/mysql.sock et dans /etc/mysql/my.cnf, la configuration du fichier de socket peut être /var/run/mysqld/mysqld.sock. Donc, supprimez ou renommez /etc/mysql/my.cnf, laissez mysql utiliser /etc/my.cnf, le problème pourra alors être résolu.

219
towry

Essaye ça:

mysql -h 127.0.0.1 -P 3306 -u root -p <database>

Aussi (pour voir si ça marche):

telnet 127.0.0.1 3306 

Il s’agit probablement d’une mauvaise configuration dans le fichier my.cnf, dans /etc/somewhere (selon le distribution Linux ).

180
Yannick

Je vois toutes ces réponses, mais aucune offre la possibilité de réinitialiser le mot de passe et pas de réponse acceptée . La question réelle étant qu'il a oublié son mot de passe, il doit donc réinitialiser, ne pas voir s'il fonctionne ou non (installé ou non), car la plupart de ces réponses impliquer.


Pour réinitialiser le mot de passe

Suivez ces étapes (peut être utile si vous oubliez vraiment votre mot de passe et vous pouvez l'essayer à tout moment, même si vous n'êtes pas dans la situation pour le moment):

  1. Arrêter mysql

    Sudo /etc/init.d/mysql stop
    

    Ou pour d'autres versions de distribution:

    Sudo /etc/init.d/mysqld stop
    
  2. Démarrer MySQL en mode sans échec

    Sudo mysqld_safe --skip-grant-tables &
    
  3. Connectez-vous à MySQL en utilisant root

    mysql -uroot
    
  4. Sélectionnez la base de données MySQL à utiliser

    use mysql;
    
  5. Réinitialiser le mot de passe

    -- MySQL version < 5.7
    update user set password=PASSWORD("mynewpassword") where User='root';
    
    -- MySQL 5.7, mysql.user table "password" field -> "authentication_string"
    
    update user set authentication_string=password('mynewpassword') where user='root';
    
  6. Rincer les privilèges

    flush priveleges;
    
  7. Redémarrer le serveur

    quit
    
  8. Arrêtez et redémarrez le serveur

    Ubuntu et Debian:

    Sudo /etc/init.d/mysql stop
    ...
    Sudo /etc/init.d/mysql start
    

    Sur CentOS, Fedora et RHEL:

    Sudo /etc/init.d/mysqld stop
    ...
    Sudo /etc/init.d/mysqld start
    
  9. Se connecter avec un nouveau mot de passe

    mysql -u root -p
    
  10. Tapez le nouveau mot de passe et profitez de nouveau de votre serveur comme si rien ne s'était passé

Cela provient de réinitialiser un mot de passe root MySQL.

111
davejal

J'ai essayé les étapes suivantes:

  1. Connectez-vous en tant que super user ou utilisez Sudo
  2. Ouvrez /etc/mysql/my.cnf en utilisant gedit
  3. Recherchez bind-address et remplacez sa valeur par l'adresse IP de la machine hôte du serveur de base de données. Pour moi, c’était localhost ou 127.0.0.1
  4. Enregistrez et fermez le fichier.
  5. Revenez au terminal et exécutez Sudo service mysql start

Et cela a fonctionné pour moi.

63
rshahriar

J'ai résolu ce problème en exécutant la commande suivante:

mysql.server start

Et si vous êtes sur un Mac et que vous avez utilisé Brew pour installer mysql, utilisez simplement:

brew services start mysql
37
sbodanis

J'avais un problème similaire. mysql ne démarre pas:

Sudo service mysql start
start: Job failed to start

Si j'ai désactivé apparmor:

Sudo aa-complain /etc/apparmor.d/*

le problème est parti. Le problème était que mysqld essayait d’accéder à /run/mysqld/mysqld.sock mais le profil apparmor n’a donné l’autorisation que pour /var/run/mysqld/mysqld.sock (/ var/run est lié symboliquement à/run, ce sont donc le même). Vous ne savez pas pourquoi mysqld n'utilise pas le chemin var puisque c'est ce qui est défini dans tous les fichiers de configuration, mais vous pouvez résoudre le problème en ajoutant ce qui suit dans /etc/apparmor.d/usr.sbin.mysqld

/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock rw,
30
dkoes

Dans mon cas, c’était que le disque était plein et que mysqld ne pouvait plus démarrer.

Essayez de redémarrer le service mysql.

service mysql redémarrer

ou

service mysql stop

service mysql start

S'il ne reconnaît pas la commande "stop", c'est bien l'espace disque. Vous devriez laisser de la place à la partition que mysql est allouée ou agrandir le disque.

Vérifiez l'espace disque avec

df -h

27
Martin Schultz

J'ai résolu ce problème en éliminant le processus mysql:

ps -ef | grep mysql
kill [the id]

Et puis j'ai redémarré le serveur avec:

Sudo /etc/init.d/mysql restart

Mais start fonctionne également:

Sudo /etc/init.d/mysql start

Ensuite, je me suis connecté en tant que admin et j'ai terminé.

27
Wartari

Je viens de rencontrer le même problème après avoir redémarré mon serveur de production. J'utilise Debian 8.1 (Jessie) sur un droplet DigitalOcean.

Voici ce que j'ai fait pour résoudre mon problème:

  1. Vérifiez si le fichier /var/run/mysqld/mysqld.sock existe. Si ce n'est pas le cas, créez-le manuellement en entrant touch /var/run/mysqld/mysqld.sock (c'est ce que je devais faire).

  2. Le processus MySQL peut donc utiliser ce fichier. Changez la propriété dudit fichier en entrant chown mysql /var/run/mysqld/mysqld.sock.

  3. Une fois que '2' est terminé, redémarrez le service MySQL en entrant service mysql restart ou /etc/init.d/mysql restart.

Après avoir suivi les étapes ci-dessus, mon problème a été résolu. J'ai rarement ce problème, et il y a probablement une meilleure façon de le faire, alors n'hésitez pas à fournir des commentaires constructifs si nécessaire :).

19
Rob

D'une manière ou d'une autre, le processus serveur MySQL n'a pas créé le socket ou le client recherche le socket au mauvais endroit.

Ma première suggestion serait de vérifier si le serveur MySQL est en cours d'exécution. La deuxième suggestion pourrait être, le serveur MySQL est-il en cours d'exécution sur un autre hôte? Si c'est le cas, ajoutez l'indicateur -h <hostname> à votre client MySQL dans le terminal.

Si MySQL s'exécute effectivement et s'exécute localement, vérifiez votre fichier my.cnf. Il devrait y avoir une ligne comme

socket = /var/run/mysqld/mysqld.sock

Voyez si cela correspond à l'emplacement du socket que vous avez mentionné dans votre message.

Par expérience, je dirais que le scénario le plus probable est que votre serveur MySQL ne fonctionne pas du tout ou ne fonctionne pas sur le même hôte que celui où vous exécutez votre client MySQL à partir du terminal.

19
Wouter

Votre serveur mysql n'est peut-être pas en cours d'exécution. Assurez-vous qu'il fonctionne en tapant mysql.server start dans le terminal.

15
Moses Wasswa

Vérifiez le paramètre "bind-adress" dans my.cnf.

Sinon essayez avec la commande:

mysql -h 127.0.0.1 -P 3306 -u root -p
  • -h pour l'hôte 127.0.0.1, c'est-à-dire localhost

  • -P (notifiez -P en majuscule) pour le port 3306, c'est-à-dire le port par défaut pour MySQL

12
Amit Girme

Voici ce qui a fonctionné pour moi:

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

Cela crée un lien.

11
User

Si vous utilisez Amazon EC2 et que vous rencontrez ce problème sur l'instance, il vous suffit de procéder comme suit:

Sudo yum install mysql-server
Sudo service mysqld restart

Amazon EC2 n’a pas de serveur installé (seul le client est installé). Dans ce cas, vous devez l’installer sur votre instance, puis essayez à nouveau.

 mysql -u root -p

pour vérifier si cela a fonctionné.

10
Murtaza Kanchwala

Je pense que chaque fois que vous obtenez l'erreur

ERREUR 2002 (HY000): Impossible de se connecter au serveur MySQL local via le socket '/var/lib/mysql/mysql.sock'

Je recommanderai d’abord de vérifier si votre démon mysql est en cours d’exécution ... La plupart du temps, il ne fonctionnera pas par défaut. Vous pouvez le vérifier par /etc/init.d/mysqld status.

Si ce n'est pas le cas, lancez-le d'abord:

.../etc/init.d/mysqld start.

Je parie que ça fonctionnera à 110%.

9
vikash kumar singh

Au lieu d'utiliser localhost:

mysql -u myuser -pmypassword -h localhost mydatabase

Utilisez 127.0.0.1

mysql -u myuser -pmypassword -h 127.0.0.1 mydatabase

(notez également qu'il n'y a pas d'espace entre -p et mypassword)

Prendre plaisir :)

9
mpinvidio

Assurez-vous que vous avez des sauvegardes des bases de données importantes, puis essayez de désinstaller MySQL choses connexes:

apt-get remove --purge mysql\*

Puis installez-le à nouvea:

apt-get install mysql-server mysql-client

Cela a fonctionné pour moi et les données ont été conservées.

Si PHP MySQL affiche des erreurs, vous devrez peut-être réinstaller PHP MySQL:

apt-get install php5-fpm php5-mysql
8
user3162468

Si XAMPP est installé sur votre machine Linux, essayez de copier votre fichier my.cnf de /opt/lampp/etc/my.cnf vers /etc/my.cnf.

Ensuite, relancez le mysql -u root ... Vous devriez maintenant avoir le bon socket et pouvoir lancer le client MySQL.

7
Toni Widiarto

Je rencontre également le même problème, il se produira si votre mysql server ne s'exécute pas par défaut. Il s'arrêtera de nouveau après quelques secondes pour que vous exécutiez à nouveau la commande ($ Sudo service mysql start) que vous pouvez modifier si vous le savez.

pour cette commande d'utilisation

$ Sudo service mysql start   

(mettez le mot de passe de l'utilisateur si nécessaire car nous utilisons Sudo), puis exécutons

$ Sudo mysql -u root -p          (put user password if required )

maintenant vous avez votre base de données

7
Roko

J'ai aussi ce problème, mais je viens de le faire:

Sudo service mysql restart 

Cela a fonctionné pour moi.

7
Kenny Ong

J'ai trouvé la solution

Avant de tirer la commande: mysql_secure_installation

  • Étape 1: Sudo systemctl stop mariadb
  • Étape 2: Sudo systemctl start mariadb
  • Étape 3: mysql_secure_installation

Ensuite, il demandera le mot de passe root et vous pourrez simplement appuyer Entrez et définir votre nouveau mot de passe root .

6
sagar mahajan

Si votre installation était récente, vous devriez vérifier si votre installation est l'installation SERVER ... sous la forme mysql-server-5.5 .. Peut-être que vous avez uniquement installé "mysql" .. il ne s'agit que du client au lieu du serveur.

6
Leandro Souza

j'ai résolu ce problème avec redémarrer mysql

/etc/init.d/mysql stop

et

/etc/init.d/mysql start

c'est ça.

6
Jazuly

Dans mon cas, cela a fonctionné en faisant de la R & D:

Je suis capable de me connecter à MySQL en utilisant

root-debian#mysql -h 127.0.0.1 -u root -p

Mais cela ne fonctionne pas avec mysql -u root -p.

Je n'ai trouvé aucun bind-address dans my.cnf. J'ai donc dépassé le paramètre socket=/var/lib/mysql/mysqld.sock dans my.cnf qui me causait un problème de connexion.

Après le redémarrage du service, tout s'est bien passé:

root@debian:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.6.19 MySQL Community Server (GPL)
6
Swapna Kumar

Dans mon cas, le port par défaut 3306 était utilisé par un autre processus et ne démarrait donc pas. Après que j’ai arrêté l’autre service et que j’ai fait Sudo service mysql start, cela a bien fonctionné. En passant, vous pouvez utiliser quelque chose comme Sudo lsof -Pn -iTCP:3306 pour voir qui peut utiliser le port.

6
Bhaskar

Dans mon cas, il semble que je n’étais pas vraiment capable de tuer le processus mysql, quand je lance

Sudo service mysql stop
ps -ef | grep mysql

Le processus mysql était toujours là, il semblerait qu'il bloquait le fichier de socket et le nouveau processus mysql n'était pas capable de le créer lui-même.

donc cela a aidé

cd /var/run
Sudo cp mysqld/ mysqld.bc -rf
Sudo chown mysql:mysql mysqld.bc/
Sudo service mysql stop
Sudo cp mysqld.bc/ mysqld -rf
Sudo chown mysql:mysql mysqld -R
Sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

Maintenant, je suis capable de me connecter à la base de données en utilisant

mysql -u root

Ensuite, pour mettre à jour le mot de passe root:

UPDATE user SET authentication_string=password('YOURPASSWORDHERE') WHERE user='root';
FLUSH PRIVILEGES;

PS: J'ai eu du mal à mettre à jour le mot de passe root, ça ressemble à un problème avec le plugin "auth_socket", j'ai donc dû créer un nouvel utilisateur avec tous les privilèges

insert into user set `Host` = "localhost", `User` = "super", `plugin` = "mysql_native_password", `authentication_string` = NULL, `password_expired` = "N", `password_lifetime` = NULL, `account_locked` = "N", `Select_priv` = "Y",
`Insert_priv` = "Y", `Update_priv` = "Y", `Delete_priv` = "Y", `Create_priv` = "Y", `Drop_priv` = "Y", `Reload_priv` = "Y", `Shutdown_priv` = "Y", `Process_priv` = "Y", `File_priv` = "Y",
`Grant_priv` = "Y",  `References_priv` = "Y", `Index_priv` = "Y", `Alter_priv` = "Y", `Show_db_priv` = "Y", `Super_priv` = "Y", `Create_tmp_table_priv` = "Y", `Lock_tables_priv` = "Y",
`Execute_priv` = "Y", `Repl_slave_priv` = "Y",  `Repl_client_priv` = "Y",  `Create_view_priv` = "Y", `Show_view_priv` = "Y", `Create_routine_priv` = "Y", `Alter_routine_priv` = "Y",
`Create_user_priv` = "Y",  `Event_priv` = "Y", `Trigger_priv` = "Y", `Create_tablespace_priv` = "Y";

Cela crée l'utilisateur "super" sans mot de passe et vous pouvez alors vous connecter avec mysql -u super

5
Buksy

Par expérience, je dis que vous devez vérifier si le serveur fonctionne en premier, puis essayez de configurer MySQL. La dernière solution consiste à réinstaller MySQL.

5
elmaazouz

Sur le serveur Debian Jessie, ma solution de travail consistait simplement à faire

service mysql restart
service mysql reload

en tant qu'utilisateur root

5
Thomas Webber

Ça fonctionne maintenant...

J'ai suivi le tutoriel Installation de MariaDB 10.1.16 sur Mac OS X avec Homebrew pour résoudre ce problème.

Mais n'oubliez pas de supprimer ou de désinstaller l'ancienne installation de MariaDB.

4
Hany Sakr

Ouvrez le terminal et tapez:

Sudo apt-get purge mysql-client-core-5.6

Sudo apt-get autoremove

Sudo apt-get autoclean

Sudo apt-get install mysql-client-core-5.5

Sudo apt-get install mysql-server  

Les packages client principal de base de données MySQL et MySQL Server auront la même version 5.5. MySQL Client 5.5 et MySQL Server 5.5 sont les "meilleures" versions actuelles de ces paquets dans Ubuntu 14.04, telles que déterminées par les responsables de paquet.

Si vous préférez installer MySQL Client 5.6 et MySQL Server 5.6, vous pouvez également trouver les paquets mysql-client-core-5.6 et mysql-server-5.6 dans le Centre logiciel Ubuntu. L'important est que les numéros de version du client et du serveur correspondent dans les deux cas.

Cela a fonctionné pour moi.

4
Akshay

J'ai eu le même problème. Après de nombreuses recherches, je n'ai trouvé aucune réponse.

Enfin, j'ai vérifié le répertoire /tmp, et ses autorisations étaient de 755. J'ai modifié ses autorisations en 777 et mysqld a bien démarré sans aucun problème.

4
shgnInc

La même chose sur Ubuntu 14.04 (Trusty Tahr).

Si vous avez installé XAMPP, installer mysql-server n'est pas la solution, car vous aurez accès à un autre serveur MySQL!

Vous devez utiliser le bon socket pour accéder. D'habitude c'est ça:

/opt/lampp/var/mysql/mysql.sock

Au lieu de cela, changez-le pour:

/var/run/mysqld/mysqld.sock
4
Luca122131

J'ai eu le même problème. Cela se produit parfois si votre service MySQL est désactivé.

Donc vous devez le démarrer:

Sudo service mysql start
4
Rahul Mohanraj
mysqld stop
mysql.server start
4
vimx

Vérifiez si vous avez les droits corrects:

Sudo chmod 755 /var/lib/mysql/mysql

J'ai eu les mêmes problèmes et cela a fonctionné pour moi. Après cela, j'ai pu démarrer MySQL.

4
user3599321

Essayez de redémarrer le serveur avec

Sudo /usr/local/mysql/support-files/mysql.server start

S'il y a une erreur alors suivez les étapes ci-dessous

  1. mysqld

Vous verrez le le journal ci-dessous. Notez la partie en surbrillance du répertoire MySQL ici

mysqld: impossible de remplacer dir par '/ usr/local/mysql-5.7.14-osx10.11-x86_64/data /' (code d'erreur: 13 - autorisation refusée) 2016-10-04T14: 09: 19.392581Z 0 [Avertissement] TIMESTAMP avec la valeur implicite DEFAULT est obsolète. Veuillez utiliser l'option de serveur --explicit_defaults_for_timestamp (voir la documentation pour plus de détails). 2016-10-04T14: 09: 19.392847Z 0 [Avertissement] Configuration non sécurisée pour --secure-file-priv: la valeur actuelle ne restreint pas l'emplacement des fichiers générés. Envisagez de le définir sur un chemin valide, non vide. 2016-10-04T14: 09: 19.392921Z 0 [Note] mysqld (mysqld 5.7.14) commençant en tant que processus 1402 ... 2016-10-04T14: 09: 19.397569Z 0 [Avertissement] Impossible de créer le fichier de test
/usr/local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test
2016-10-04T14: 09: 19.397597Z 0 [Avertissement] Impossible de créer le fichier de test /usr/local/mysql-5.7.14-osx10.11-x86_64/data/Sudharshan.lower-test
2016-10-04T14: 09: 19.397712Z 0 [ERROR] n'a pas réussi à définir datadir sur /usr/local/mysql-5.7.14-osx10.11-x86_64/data/
2016-10-04T14: 09: 19.397776Z 0 [ERREUR] Abandon
2016-10-04T14: 09: 19.397795Z 0 [Note] Binlog end
2016-10-04T14: 09: 19.397925Z 0 [Note] mysqld: Arrêt complet

  1. Sudo chown -R _mysql:_mysql /usr/local/mysql-5.7.14-osx10.11-x86_64

Notez le chemin du dossier MySQL /usr/local dans le journal précédent, et dans mon cas c'était mysql-5.7.14-osx10.11-x86_64 , et vous devez mettez-le à jour en fonction du journal que vous obtenez sur votre machine pour fournir accès en lecture au répertoire MySQL

  1. Sudo /usr/local/mysql/support-files/mysql.server start

Démarrer MySQL
SUCCÈS!

3
Sudharshan

Il vous manque l’autorisation de créer/var/run/mysqld directory.

  • mkdir -p/var/run/mysqld
  • chown mysql: mysql/var/run/mysqld
3
Namjith Aravind

Pour moi, une mise à jour a résolu le problème:

Sur Ubuntu:

Sudo apt-get update
Sudo apt-get upgrade

Sur CentOS:

Sudo yum update
3
mFlorin

Le stockage de mon serveur était plein, cela empêchait Mysql de démarrer. Vous avez eu l'idée de ici . Augmenter le disque dur et redémarrer a corrigé le problème.

2
Dawoodjee

Vous pouvez d’abord vérifier si le service est en cours d’exécution avec:

ps ax | grep mysql

J'ai eu cette réponse:

6104 pts/0    S      0:00 /bin/sh /usr/bin/mysqld_safe
6431 pts/0    Sl     0:01 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --pid-file=/var/run/mysqld/m

Pas de réponse signifie que le service ne fonctionne pas, alors:

service  mysql start
2
Amos Kosgei

Copiez simplement votre fichier /opt/lampp/etc/my.cnf dans /etc/mysql/my.cnf.

Et dans le type de terminal:

mysql -u root

Vous obtiendrez l'invite mysql>:

mysql> Update mysql.user set Password=PASSWORD('your_password') where user='root';

mysql> FLUSH PRIVILEGES;
2

Je ne peux pas l'expliquer, mais dans kubuntu 12.04.2 après

Sudo apt-get autoremove linux-headers-3.2.0-37 linux-headers-3.2.0-37-generic

ça a commencé à marcher

2
alsator

Installez mysql-server:

Sudo apt-get install mysql-server
enter password as root

S'identifier:

mysql -u root -p root

Ici, -u user name et -p password ont été donnés lors de l'installation du serveur MySQL. Cela fonctionnera comme cela a fonctionné pour moi.

2
Mohit Singh

Dans mon cas, le problème était la corruption de page dans toutes mes bases de données (consultez le journal des erreurs mysql).

Je l'ai résolu avec Forcing InnoDB Recovery . L'astuce consiste à éditer /etc/mysql/my.cnf et à ajouter

innodb_force_recovery = 4

juste en dessous

[mysqld]

Et puis redémarrez mysql. Après avoir vérifié que tout fonctionne correctement, supprimez à nouveau la ligne.

2
Michiel
For CentOS Linux release 7.3
The mysql.sock file path is /var/lib/mysql/mysql.sock
Edit /etc/my.cnf file and put below entry
This will solve your problem.

[client]
user=root
password=Passw0rd
port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0

Après ce redémarrage du service

service mysql restart
2
Ishwar Chincholkar

Cette réponse concerne la mise à jour vers MySQL 5.6 sur des machines disposant de peu de RAM

J'ai eu le même problème lors de la mise à niveau de MySQL 5.5 à 5.6 sur ma Debian 8 (Jessie). MySQL n’a pas été démarré (le statut était actif/fermé) et il était tout simplement impossible de faire service mysql start, car comme je l’ai trouvé dans le fichier journal /var/logs/mysql/error.log:

InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(136019968 bytes) failed; errno 12
Cannot allocate memory for the buffer pool

La mémoire n'était pas suffisante: je n'avais que 256 Mo de RAM.

Dans MySQL, il existe un paramètre, performance_schema. Par défaut, il est désactivé dans MySQL 5.5.

https://dev.mysql.com/doc/refman/5.5/en/performance-schema-startup-configuration.html

Mais dans MySQL 5.6, la valeur par défaut est activée, et simplement en ajoutant la ligne suivante dans le fichier /etc/mysql/my.cnf et en redémarrant, cela a fonctionné.

performance_schema = off

Avertissement: Si vous désactivez ce paramètre, vous risquez de rencontrer des problèmes de performances, mais je suppose que dans un environnement de développement cela ne posera pas de problème.

En outre, voici un article qui pourrait être utile pour configurer MySQL afin qu’il utilise une mémoire minimale, Configuration de MySQL pour utiliser une mémoire minimale.

1
dav

Si vous utilisez Ubuntu, cela pourrait être une question de privilèges.

Vérifiez vos privilèges de répertoire. Il ne suffit pas d'être dans le groupe racine, utilisez également un chmod sur les répertoires écrits par MySQL (par exemple, /var/run/mysqld/ pour la création du fichier mysqld.pid.).

C'était utile pour moi.

1
blackpanther

Vérifiez également votre my.conf (/etc/mysql/my.cnf) et voyez si l'adresse de rattachement est définie sur 127.0.0.1.

Sinon, cela pourrait causer ce problème.

1
BonifatiusK

Pour moi c'était:

Ouvrez /etc/mysql/my.cnf ou /etc/my.cnf et recherchez 'bind-address'. C'était 127.0.0.1. Je l'ai converti en localhost, le résultat de la ligne doit donc être 'bind-address = localhost'.

Sinon, vous devez exécuter votre serveur MySQL avec une adresse IP qui existait dans la directive bind-address, c'est-à-dire mysql -h 127.0.0.1.

1
Omar Alahmed

Je viens d'avoir ce problème maintenant et résolu.

Bien que vous ayez installé mysql-server, le démon doit être en cours d'exécution pour que le client puisse s'y connecter.

Commencez par vérifier si le serveur mysql est en cours d'exécution:

netstat -tap | grep mysql

Vous devriez voir quelque chose comme ça:

$ Sudo netstat -tap | grep mysql
tcp        0      0 localhost:mysql         *:*          LISTEN     6639/mysqld     

Si le serveur n'est pas en cours d'exécution, démarrez le démon à l'aide de la commande suivante:

/etc/init.d/mysql restart

Cela devrait résoudre votre problème s'il est installé.

1
user1527227

Solution simple sur mon serveur: après la migration vers un nouveau serveur Debian 7 avec mes bases de données MySQL, la deuxième adresse IP locale , 127.0.1.1, était manquant dans mon fichier hosts . Ajouter ceci a résolu les avertissements:

echo -e "\n127.0.1.1       $(hostname)" >> /etc/hosts
1
rubo77

Pour éviter le problème, vous devez exécuter un arrêt en douceur du serveur à partir de la ligne de commande plutôt que de le mettre hors tension.

shutdown -h now

Cela arrêtera les services en cours avant de mettre la machine hors tension.

Basé sur Centos, une méthode supplémentaire pour le récupérer lorsque vous rencontrez ce problème consiste à déplacer mysql.sock:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

service mysqld start

Le redémarrage du service crée une nouvelle entrée appelée mqsql.sock

1
Ali Hashemi

Vous exécutez localement, ce qui signifie que votre client s'exécute sur le même ordinateur que votre serveur.

Assurez-vous que votre utilisateur Unix peut atteindre/lire /var/run/mysqld/mysqld.sock:

ls -als /var
ls -als /var/run
ls -als /var/run/mysqld
ls -als /var/run/mysqld/mysqld.sock

Sinon, contactez votre administrateur système ou administrateur de la base de données pour fournir un accès en lecture/exécution adéquat à ces répertoires ou déplacez le fichier de socket ailleurs.

1
TVNshack

J'ai eu le même problème. J'ai trouvé ça.

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

En effet, vous n'exécutez pas le démon mysqld avant de lancer le client MySQL. Le fichier /var/lib/mysql/mysql.sock sera automatiquement créé lors de l'exécution de la première instance de MySQL.

Pour réparer:

Commencez par lancer le démon MySQL, puis tapez mysql:

/etc/init.d/mysqld start
mysql

Changer le mot de passe root de MySQL

Par défaut, le mot de passe root est vide pour la base de données MySQL. C'est une bonne idée de changer le mot de passe root MySQL en un nouveau du point de vue de la sécurité.

mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('newpassword') WHERE user='root';
mysql> FLUSH PRIVILEGES;

Une fois cela fait, vérifiez en vous connectant:

mysql -u root -p
Enter Password: <your new password>
1
user3742084

Dans Ubuntu 18:10 Linode 1GB Ram, j'ai rencontré cette erreur. Après avoir examiné /var/log/mysql/error.log, je suis tombé sur ceci:

[Note] InnoDB: innodb_empty_free_list_algorithm a été remplacé par l'héritage en raison de la petite taille du pool de mémoire tampon. Pour utiliser le backoff, augmentez le pool de mémoire tampon d’au moins 20 Mo.

J'ai mis à niveau mon linode à 2 Go et redémarré mariadb avec Sudo mysql. Ensuite, mysql_secure_admin a été exécuté, mais le mot de passe root n'a pas été défini pour l'utilisateur ususl unitl, qui modifie le compte utilisateur root pour qu'il utilise le plug-in mysql_native_password. Pas sûr, mais il semble que la chaussette ait été créée, mais le serveur s'est arrêté en raison du manque de mémoire dans mon VPS.

1
uberdave
Sudo touch /var/lib/mysql/.force_upgrade
Sudo rcmysql restart

a travaillé pour moi quand j'ai eu ce problème

0
t0dbld

Cette erreur peut également se produire si vous essayez de modifier le répertoire dans lequel la base de données est stockée, mais entrez le mauvais répertoire dans le fichier de configuration (comme une faute de frappe dans le deuxième lecteur sous la forme D au lieu du fichier D_ exact. ). Au lieu de vous dire que le répertoire typo n'existe pas, il vous indiquera que vous ne disposez pas des autorisations nécessaires pour y accéder (ce qui vous amène à essayer de modifier les autorisations du répertoire typo, ce qu'il vous laissera faire). Donc, si vous obtenez cette erreur en changeant de répertoire, revérifiez le fichier de configuration et assurez-vous de ne pas avoir de faute de frappe.

0
Michael

Avez-vous vérifié si LAMPP est en cours d'exécution?

Sudo bash <path>/lampp start

Pour moi, le chemin est

Sudo bash /opt/lampp/lampp start
0
thecheech

J'avais aussi ce problème et aucune de ces réponses ne m'a aidé. Le problème était différent, mais l’erreur était celle décrite par le PO.

Je vérifie les journaux de MySQL dans /var/log/mysql, et j'ai vu ceci:

150309  5:03:19 [ERROR] /usr/sbin/mysqld: unknown variable   'lower_case_tables_names=1'

J'ai ouvert le fichier /etc/mysql/my.cnf et ai dépassé cette ligne #. Après cela, j'ai pu me connecter à la base de données.

Honnêtement, je ne sais pas quel était le problème. Le serveur Linode devait redémarrer pour des raisons de maintenance et cette erreur est venue de nulle part.

0
Camauu

Vous devez vérifier le propriétaire du groupe pour /var/run/mysqld. Si ce n'est pas mysql.mysql, alors:

su root
chown mysql.mysql /var/run/mysqld

Cela peut être un problème avec le fichier de configuration. J'ai eu un problème similaire et je n'ai pas pu trouver de solution sur le Web. J'ai remarqué que j'avais deux fichiers my.cnf, un dans /etc/mysql et l'autre dans /etc. Suivez les étapes ci-dessous:

  1. Recherchez les fichiers my.cnf sur votre ordinateur à l'aide de locate my.cnf.

  2. S'il y a deux entrées, c'est-à-dire /etc/my.cnf et /etc/mysql/my.cnf, renommez /etc/mysql/my.cnf en quelque chose d'autre, par exemple /etc/mysql/my.cnf.old

Essayez de relancer MySQL.

0
enowman

Mon cas, c’est simplement parce que mysql a été arrêté à cause du dossier manquant /var/log/mysql défini dans /etc/mysql/my.cnf. Après l'avoir créé, je pouvais démarrer mysql et il fonctionnait normalement.

0
ownking

La mise à niveau de MySQL a résolu le problème pour moi. Sur les serveurs RHEL, exécutez simplement:

Sudo yum upgrade mysql-server
0
sffc

J'ai résolu ce problème en supprimant cette ligne de mon /etc/mysql/my.conf dans la section mysqld ([mysqld]):

default-character-set=utf8

Redémarrez et cela fonctionne bien.

0
aotero

J'avais ceci sur Ubuntu et comme je l'ai découvert, il y avait plus d'une instance de mysqld.

Il semblait que le précédent n'avait pas été complètement arrêté, alors que le nouveau a déjà commencé. Exécuter '/etc/init.d/mysql stop' n'a pas aidé, il a toujours renvoyé 'OK' et une nouvelle instance a été lancée automatiquement immédiatement après:

        $ Sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28315
        $ Sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28570
        $ Sudo /etc/init.d/mysql stop
         * Stopping MySQL database server mysqld        [ OK ] 
        $ pgrep mysql
        28763
        ..... etc ...

Heureusement, la commande suivante a résolu le problème:

    $ Sudo service mysql stop
    mysql stop/waiting

    $ ps -ef | grep mysql
    29841 26858  0 10:59 pts/8    00:00:00 grep --color=auto mysql <--- IT's gone ! 

Après cela, j'ai pu redémarrer mysql et voir que mysql.sock a été créé avec succès.

0
Oleg Gryb

Un conseil: demandez toujours à MySQL quel est le problème. Dans mon cas, less /var/log/mysql/error.log et voyez ceci:

2015-07-28 12:01:48 23224 [ERROR] /usr/sbin/mysqld: unknown variable 'log_slow_queries=/var/log/mysql/mysql-slow.log'
2015-07-28 12:01:48 23224 [ERROR] Aborting

Il se plaint, parce que je n'ai pas commenté cette option dans my.cnf, mais après avoir commenté cette option, elle a démarré sans problème.

0
K-Gun

Dans /etc/mysql/my.cnf, vérifiez que la dernière ligne est:

!includedir /etc/mysql/conf.d/
0
FS Karimi

Cette réponse risque de se noyer ici, mais peut-être que quelqu'un la tombera accidentellement.

Dans mon cas, SELinux a empêché l'utilisateur/l'application de se connecter au socket du serveur MySQL (MariaDB). Sur RHEL, vérifiez /var/log/audit/audit.log si SELinux est activé.

0
Richlv