Install-mysql-4.1 echec demarrage-du-service

BenJ -  
 William.TASSIN -
Bonjour,

J'ai un problème avec mon installation mysql qui ne veut pas se lancer.
Avec la commande: mysql /usr/local/mysql/bin/mysqld Mysql ne se lance pas! Et j'ai la meme erreur en faisant mysql start

J'ai un message d'erreur avec mysql.sock : can't connect to local MySQL Server through socket 'tmp/mysql.sock' (2)

J'ai installe mysql-standard-4.1.21-pc-linux-gnu-i686-glibc23.tar.gz

Dans le fichier etc/my.cnf, j'ai decommente la ligne
#tmpdir = /tmp/

mais j'ai toujours la meme erreur!!

D'ou vient le problème svp ?

Merci d'avance pour votre aide ...

Configuration: Linux
Distribution: Cemtos 5.1
Apache 2.2.3
PHP 5.2.5
Configuration: Windows XP
Firefox 2.0.0.12

34 réponses

  • 1
  • 2
Résumé de la discussion

Le problème central est le démarrage de MySQL sur Linux, avec l'erreur Can't connect to local MySQL server through socket et des difficultés liées au socket et au fichier de configuration. Plusieurs réponses conseillent de corriger les chemins socket dans /etc/my.cnf, de redémarrer mysqld après chaque modification et de vérifier datadir et permissions pour éviter que le démon s'arrête immédiatement. D'autres évoquent le mélange entre options du client et du serveur et recommandent d'utiliser mysql séparément avec l'option -p, afin d'éviter d'interpréter un exécutable mysqld comme une base de données. En pratique, plusieurs observations montrent que le démon peut se fermer si le fichier PID n'est pas propre ou si le répertoire de données n'appartient pas à l'utilisateur mysql.

Bobot (l'IA à votre service)
  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    Ton fichier "mysql.sock" créé lors du lancement du démon doit se trouver ailleurs que dans /tmp (peut-être dans /var/lib/mysql/).

    Tu dois ajuster la directive "socket=" dans my.cnf dans la rubrique [mysqld] et [client] comme indiqué là :

    https://www.tech-recipes.com/rx/762/solve-cant-connect-to-local-mysql-server-through-socket-tmpmysqlsock/

    ou lancer le client mysql avec l'option --socket= pointant vers le fichier mysql.sock avec son chemin complet, là où il se trouve réellement.

    Dal
    0
  2. BenJ
     
    Merci d'avoir repondu a mon post

    Tu as raison mon fichier "mysql.sock" se trouve bien dans /var/lib/mysql/

    J'ai donc ajuster la directive "socket=" dans my.cnf dans la rubrique [mysqld] et [client] comme c'etait indique dans ton lien :

    [mysqld]
    socket=/var/lib/mysql/mysql.sock 
    
    [client]
    socket=/var/lib/mysql/mysql.sock 


    Cependant maintenant quand je tape la commande: mysql usr/local/mysql/bin/mysqld

    J'ai l'erreur ERROR 1102 (42000): Incorrect database name '/usr/local/mysql/bin/mysqld'
    0
  3. BenJ
     
    Dans le lien que tu m'as donne ils font changent :

    [mysqld]
    datadir=/usr/local/mysql/data
    socket=/var/lib/mysql/mysql.sock
    
    [mysql.server]
    user=mysql
    basedir=/usr/local/mysql
    
    [client]
    socket=/var/lib/mysql/mysql.sock 
    


    Dans mon fichier etc/my.cnf, je n'ai ajuste que socket de [mysqld] et de [client].

    Est ce que je dois aussi ajuster ce qu'il y a ci dessous ?

    [mysqld]
    datadir=/usr/local/mysql/data
    socket=/var/lib/mysql/mysql.sock
    
    [mysql.server]
    user=mysql
    basedir=/usr/local/mysql
    


    Est ce que mon erreur est lie a ca?

    Merci pour votre aide

    Cordialement

    Benjamin
    0
  4. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    Cela vient de la façon dont tu construis ta commande mysql. Après la commande tu peux avoir soit des options (précédées de tiret(s)) soit un nom de base de donnée. L'argument "/usr/local/mysql/bin/mysqld" est donc considéré comme une base de données, alors que ce n'en est pas une (c'est l'exécutable du démon mysql, qui n'a rien à faire là).

    Vois

    man mysql

    Pour lancer le client mysql sur le serveur tape juste :

    mysql -p

    Et authentifies toi avec le mot de passe correspondant à ton user mysql. Si tu n'as définit aucun mot de passe tape juste entrée (et n'oublies pas ultérieurement de paramétrer correctement mysql en définissant les accès des users, leurs privilèges et leurs mots de passe).

    Dal
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. BenJ
     
    Quand je tape la commande : mysql /usr/local/mysql/bin/mysqld ou que je tape la commande mysql -p (en m'authentifiant)
    j'ai une nouvelle 'erreur : "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' "

    Pourtant j'ai bien modifie le fichier etc/my.cnf comme je l'ai dit precedemment dans mon post.
    Quand je fait un find -name mysql.sock il ne trouve pas le fichier. Mon fichier mysql.sock n'est plus dans le repertoire /var/lib/mysql/

    Je ne comprends pas pourquoi!!!

    J'ai aussi essaye de rajouter des options a ma ligne de commande

    mysql ... /usr/local/mysql/bin/mysqld --defaults-extra-file=/usr/local/mysql/data/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --skip-external-locking --port=3306 --socket=/tmp/mysql.sock --bind-address=127.0.0.1
    


    Mais ca n'a pas marche, il affiche des messages d'erreurs en disant qu'il ne trouve pas le fichier, ou qu'il ne connait pas basedir et datadir ....

    Donc voila, je ne sais vraiment pas comment resoudre mon bug

    Si tu as une idee ... N'hesite pas!

    Merci d'avance pour ton aide

    Benjamin
    0
  7. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    j'ai une nouvelle 'erreur : "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' "

    Non, c'est la même qu'au début :-)

    Pourtant j'ai bien modifie le fichier etc/my.cnf comme je l'ai dit precedemment dans mon post.
    Quand je fait un find -name mysql.sock il ne trouve pas le fichier. Mon fichier mysql.sock n'est plus dans le repertoire /var/lib/mysql/

    Je ne comprends pas pourquoi!!!


    C'est "/etc/my.cnf" (les "/" initiaux sont importants car ils différencient un chemin absolu d'un chemin relatif).

    Après chaque changement de my.cnf, tu dois redémarrer le démon mysqld pour qu'il prenne en compte les changements.

    Si /var/lib/mysql/mysql.sock n'est pas là ou il devrait être, c'est peut-être parce que le démon mysqld n'est pas démarré (et vérifier à cette occasion qu'il démarre correctement). Essaye :

    ps aux | grep -i mysql

    pour vérifier si le processus est lancé

    J'ai aussi essaye de rajouter des options a ma ligne de commande
    mysql ... /usr/local/mysql/bin/mysqld --defaults-extra-file=/usr/local/mysql/data/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --skip-external-locking --port=3306 --socket=/tmp/mysql.sock --bind-address=127.0.0.1


    C'est un joyeux mélange. Là, tu lances "mysql" qui est le client, avec des options qui concernent "mysqld" qui est le serveur (aussi appelé "démon", d'où le "d" à la fin) et des trucs que n'arrive pas à expliquer (points de suspension, chemin absolu /usr/local/mysql/bin/mysqld, options inconnues dans mes versions).

    Dal
    0
  8. BenJ
     
    Oui c'est la même erreur qu'au début et ca m'énerve d'être bloque a cause de ça!

    Après chaque changement de my.cnf, tu dois redémarrer le démon mysqld pour qu'il prenne en compte les changements.

    Comment je fais pour redemarrer le démon mysqld (le serveur) ?
    C'est quoi la commande car quand je tape /usr/local/mysql/bin/mysqld start il me dit : " Too many arguments (first extra is 'start')..."

    Si /var/lib/mysql/mysql.sock n'est pas là ou il devrait être, c'est peut-être parce que le démon mysqld n'est pas démarré (et vérifier à cette occasion qu'il démarre correctement). Essaye :


    Quand je fais la commande : ps aux | grep -i mysql
    Mon serveur n'est pas démarré et je n'arrive pas a le lancer. C'est quoi la commande pour le relancer?

    J'ai aussi essaye de rajouter des options a ma ligne de commande
    mysql ... /usr/local/mysql/bin/mysqld --defaults-extra-file=/usr/local/mysql/data/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --skip-external-locking --port=3306 --socket=/tmp/mysql.sock --bind-address=127.0.0.1

    C'est un joyeux mélange. Là, tu lances "mysql" qui est le client, avec des options qui concernent "mysqld" qui est le serveur (aussi appelé "démon", d'où le "d" à la fin) et des trucs que n'arrive pas à expliquer (points de suspension, chemin absolu /usr/local/mysql/bin/mysqld, options inconnues dans mes versions).


    En ce qui concerne ce joyeux mélange,ce n'est pas le mien!
    C'est ce que j'ai trouve sur le site : http://www.devside.net/archives/guides/linux/mysql

    Merci pour ton aide

    Benjamin
    0
  9. BenJ
     
    Peut etre que l'ideal c'est que je desinstalle et que je reinstalle mysql-4.1.22

    Peut etre que c'est mon installation de mysql qui n'est pas bonne!

    Est ce quelqu'un connait un bon tutoriel pour installer mysql-4.1 facilement et sans bug ?

    Merci d'avance

    Benjamin
    0
  10. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Re,

    Je n'utilise pas CentOS, mais il me semble que c'est un dérivé de RedHat Enterprise (que je n'utilise pas non plus d'ailleurs :-).

    1.

    Si tu as installé le serveur mysql avec le gestionnaire de paquets (yum, je suppose, avec une commande du type yum -y install mysql-server), il a dû te créer un script de démarrage du serveur qui devrait se trouver là et que tu pourrais tenter de lancer comme cela :

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

    et

    /etc/rc.d/init.d/mysqld stop pour l'arrêter

    et certainement

    /etc/rc.d/init.d/mysqld restart pour faire un arrêt suivit d'un démarrage.

    2.

    Si tu as suivit la méthode indiquée sur le lien que tu as donné plus haut, j'espère que ce n'est pas une version 4.1 que tu installes (parce qu'ils en sont à la 6.0 quand même maintenant), et je suppose que tu as récupéré une version utilisable sur ton système. Tu vas devoir démarrer le serveur à la main, comme indiqué là :

    http://dev.mysql.com/doc/refman/5.0/fr/mysqld-safe.html

    Apparemment, dans ton cas (à adapter en fonction du répertoire réel d'installation de ton serveur mysql) :

    cd /usr/local/mysql/
    bin/safe_mysqld &


    Une fois démarré, pour l'arrêter, tu peux faire un kill avec le PID donné par la commande ps là haut.

    Si tu veux automatiser cela avec un script de démarrage et que ton installation ne t'en a pas créé, suit les instructions figurant là :

    http://dev.mysql.com/doc/refman/5.0/fr/automatic-start.html

    Après l'installation, une phase essentielle de paramétrage post-installation est nécessaire pour éviter les mauvaises surprises, les comptes initiaux créés par Mysql n'ayant pas de mot de passe :

    http://dev.mysql.com/doc/refman/5.0/fr/post-installation.html

    Dal
    0
  11. BenJ
     
    J'utilise CentOS et c'est de la m****. Je préféré Ubuntu! Oui c'est un dérivé de RedHat Enterprise

    En faite pour t'expliquer un peu plus, sur mon serveur Linux je dois installer Apache 2.2, PHP 5.2 et MySQL 4.1
    Dans la version de Centos que j'ai installe, il y a des packages par défaut pour installer Apache 2.2, Php 5.1 et Mysql 5.0
    Donc j'ai installe Apache 2.2 en faisant un yum install.....
    En revanche pour PHP et Mysql ce n'est pas les versions que je veux installer donc je l'ai installe a la main en decompressant un tar.gz puis make, make install....

    Je suis oblige de travailler sur Mysql-4.1 car les autres serveurs utilisent cette version. Je dois faire de la replication MySQL...
    Mais après les manipulations on passera a la version 5.1 ou 6.0 :)

    Donc j'ai utilise la 2eme methode que tu as indique.

    J'ai déjà essaye de démarrer le démon en utilisant le safe_mysqld mais ca n'a pas marche :
    Quand je tape : /usr/local/mysql/bin/safe_mysqld --user=mysql ou /usr/local/mysql/bin/safe_mysqld
    Voila ce qui est affiche:
    Starting mysqld daemon with databases from /usr/local/mysql/data
    STOPPING server from pid file usr/local/mysql/data/localhost.localdomain.pid
    080218 16:26:33 mysqld ended


    Donc en gros il démarre puis il s'arrête direct! Il y a pas un autre moyen pour le démarrer ?

    Merci pour ton aide et tes explications

    Benjamin
    0
  12. BenJ
     
    J'ai essaye de réinstaller mysql.
    J'ai télécharge mysql-4.1.22.tar.gz sur https://dev.mysql.com/downloads/mysql/4.1.html#linux
    J'ai fait un tar zxvf mysql-4.1.tar.gz pour dezipper le fichier.
    Ensuite je fais cd mysql-4.1
    Et quand je veux configurer MySQL en faisant : ./configure --prefix=/usr/local/mysql-4.1
    ça ne marche pas, il m'affiche la même erreur que tout a l'heure quand j'utilisais le safe_mysqld pour démarrer le démon!!

    Starting mysqld daemon with databases from /usr/local/mysql/data
    STOPPING server from pid file usr/local/mysql/data/localhost.localdomain.pid
    080218 16:26:33 mysqld ended


    C'est quoi le localhost.localdomain.pid ?

    Je ne sais pourquoi j'ai cette erreur :(

    Est ce qu'il y a un ordre pour installer Apache PHP et MySQL ?

    Est ce que je dois installer MySQL en 1er ?

    Merci pour votre aide

    Benjamin qui est perdu et qui a vraiment besoin d'aide!!!
    0
  13. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    1.

    La procédure de lancement par mysql_safe décrite dans la documentation de MySQL et que je t'ai décrite plus haut, suppose que :

    a. tu fasses un cd dans le répertoire d'installation
    b. que tu lances l'application comme cela "bin/safe_mysqld &"

    Ce n'est visiblement pas ce que tu as fait.

    On analysera les messages d'erreur (s'il y en a) une fois que tu auras lancé correctement safe_mysqld (et si c'est encore d'actualité, vu que tu sembles tout bazarder sur cette version).

    2.

    Si tu décides de réinstaller quelque chose, tu devrais t'assurer que tu as bien désinstallé tout ce qui relève de la précédente version, d'autant plus que ce n'est pas la même.

    Si tu as utilisé un script "make" pour l'installation de mysql-standard-4.1.21-pc-linux-gnu-i686-glibc23.tar.gz, vois si ce script "make" dispose d'une fonction "uninstall" (édite le Makefile) et sinon, fais simplement les opérations inverses de ce que fait la fonction "install". Ou les opérations inverses de tout ce que tu as fait.

    3.

    Je comprend que tu as désormais récupéré un package source là http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.22.tar.gz/from/pick#mirrors

    Suit les instructions figurant dans le fichier "INSTALL-SOURCE" présent dans ce package.

    Après avoir créé le groupe et user, c'est la ligne suivante qui doit être lancée, et pas celle que tu décris dans ton message.

    ./configure --prefix=/usr/local/mysql

    4.

    quand je veux configurer MySQL en faisant : ./configure --prefix=/usr/local/mysql-4.1
    ça ne marche pas, il m'affiche la même erreur que tout a l'heure quand j'utilisais le safe_mysqld pour démarrer le démon!!

    Starting mysqld daemon with databases from /usr/local/mysql/data
    STOPPING server from pid file usr/local/mysql/data/localhost.localdomain.pid
    080218 16:26:33 mysqld ended


    C'est très étrange, mais si tu as déjà quelque chose dans /usr/local/mysql-4.1, c'est peut être la cause de ce message.

    C'est quoi le localhost.localdomain.pid ?

    Visiblement, c'est le nom d'un fichier contenant le PID du démon d'un process Mysql, mais je ne comprend pas qu'il soit lancé au stade du ./configure. Es-tu sûr que c'est ce message ?

    Quand tu auras pu lancer ton ./configure et que tu auras généré le Makefile, vérifie quelle est la valeur des CFLAGS et s'ils correspondent à ceux recommandés (ils insistent sur l'inclusion de l'option -fno-exceptions pour éviter des plantages du serveur), avant de lancer la compilation.

    Le meilleur "tutoriel", c'est la documentation officielle de Mysql, dont tu as une version raccourcie pour l'installation dans "INSTALL-SOURCE" et une version plus complète pour la version 4.1 sur le site de mysql.

    Dal
    0
  14. BenJ
     
    Salut,

    1.

    Que je fasse d'abord le cd /usr/local/mysql (répertoire d'installation) puis que je lance l'application comme ceci "bin/safe_mysqld &"
    J'ai la meme erreur que precedemment :

    Starting mysqld daemon with databases from /usr/local/mysql/data
    STOPPING server from pid file usr/local/mysql/data/localhost.localdomain.pid
    080219 09:06:12 mysqld ended


    2.

    J'ai supprime mon repertoire /usr/local/mysql en utilisant la commande cd /usr/local puis en faisant un rm -Rf mysql

    3.

    J'ai telecharge le package source que tu m'as donne en lien : http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.22.tar.gz/from/pick#mirrors

    J'ai fait un wget ... pour recuperer le .tar.gz sur ma machine
    J'ai fait un tar zxvf mysql-4.1.22.tar.gz pour dezipper le fichier.
    J'ai fait cd /usr/local/mysql-4.1.22
    J'ai cree le groupe : groupadd mysq et j'ai cree le user : useradd -g mysql mysql
    Et quand je veux configurer MySQL en faisant : ./configure --prefix=/usr/local/mysql

    J'ai le message d'erreur suivant :
    checking for termcap functions library... configure : error : No curses/termcap library found

    J'ai fait un yum install termac et un yum -y install ncurses-devel puis j'ai refait le ./configure --prefix=/usr/local/mysql
    Mais il affiche la meme erreur : checking for termcap functions library... configure : error : No curses/termcap library found

    Merci pour ton aide

    Benjamin
    0
  15. BenJ
     
    Rectification j'ai redemarre ma machine et l'erreur n'apparait pu

    J'ai donc fait le ./configure --prefix=/usr/local/mysql
    Puis make
    Et make install
    0
  16. BenJ
     
    Voici toutes les etapes de mon installation :

    wget 'http:// ..' en utilisant le lien que tu m'avais donne
    tar zxvf mysql-4.1.22.tar.gz
    groupadd mysq
    useradd -g mysql mysql
    cd /usr/src/mysql4.1.22
    ./configure --prefix=/usr/local/mysql
    make
    make install
    cp support-files/my-medium.cnf /etc/my.cnf
    cd /usr/local/mysql
    chown -R root .
    chown -R mysql var
    chgrp -R mysql .
    bin/mysql_safe &


    Et maheureusement j'ai toujours la meme erreur :

    Starting mysqld daemon with databases from /usr/local/mysql/data
    STOPPING server from pid file usr/local/mysql/data/localhost.localdomain.pid
    080219 10:42:33 mysqld ended


    Est ce que j'ai oublie d'installer ou de configurer quelquechose ?

    J'aimerais savoir et comprendre pourquoi il me met ce message d'erreur

    Merci pour ton aide

    Benjamin
    0
  17. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Bonjour,

    J'ai donc fait le ./configure --prefix=/usr/local/mysql
    Puis make
    Et make install


    Tu n'indiques pas si tu as vérifié que le Makefile utilise bien les CFLAGS recommandés pour l'optimisation et la stabilité du binaire compilé, mais je suppose que tu l'as fait.

    La procédure d'installation ne s'arrête pas là :-)

    En 2.9.1 du INSTALL-SOURCE, tu t'es arrêté au 7.

    Continue, tu es sur la bonne voie !

    Dal
    0
  18. pouet
     
    Lu Benj

    dans ton fichier de log tu n'as rien?
    il se trouve dans ton fichier data normalement
    /usr/local/mysql/data/TON_NOM_DE_SERVEUR.err

    donne nous les dernieres lignes.

    Autre truc lors de ton installation tu n'as pas générer tes tables j'ai l 'impression

    la directive

    scripts/mysql_install_db --user=mysql

    donne le fichier .err deja ca avancera le shmilbick !
    0
  19. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Désolé, j'ai posté sans voir ton message à quelques secondes près.

    Tu n'as pas créé les tables "grant" pour le user "mysql" ? Tente quand même de le faire.

    bin/mysql_install_db --user=mysql

    As-tu des logs sur l'erreur, dans un fichier du genre /usr/local/mysql/data/localhost.localdomain.err ?

    Dal
    0
  20. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Lol, j'ai encore frappé.

    Juste un truc.. ton répertoire de données s'appelle bien "data" non.. ?

    Tu n'aurais pas dû faire :

    chown -R mysql data

    dans ces conditions ?

    Refait :

    cd /usr/local/mysql
    chown -R root .
    chown -R mysql data
    chgrp -R mysql .


    Dal
    0
  21. BenJ
     
    Merci pour toutes vos réponses alors je pense que je suis sur la bonne voie meme si ce n'est pas encore finit

    Alors j'ai oublie de marquer une étape de mon installation. J'avais initialiser la configuration de la base de donnée grâce à la commande:
    bin/mysql_install_db --user=mysql

    Ensuite j'ai fait un : ps -aux | grep -i mysql
    Puis avec un kill + numéro processus j'ai arrête tous les processus qui tournaient

    Puis j'ai refait la commande :
    cd /usr/local/mysql
    bin/mysql_safe &


    Et j'ai eu le message :
    Starting mysqld daemon with databases from /usr/local/mysql/var
    Et le serveur ne s'arrete pas! Il continue de tourner.... :) donc on dirait que ça marche
    Si je tape mysql, je peux taper les commandes sql

    C'est quoi la commande pour voir les tables qui sont déjà dans ma base de données ?

    Donc la j'ai accès a mon serveur mysql et pour le client mysql je peux le démarrer comment ?

    Merci pour votre aide

    Benjamin
    0
  • 1
  • 2