Install-mysql-4.1 echec demarrage-du-service

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

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. Contributeur
    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
    1. 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
      1. 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
        1. Contributeur
          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
          1. 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
            1. Contributeur
              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
              1. 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
                1. 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
                  1. Contributeur
                    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
                    1. 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
                      1. 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
                        1. Contributeur
                          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
                          1. 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
                            1. 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
                              1. 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
                                1. Contributeur
                                  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
                                  1. 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
                                    1. Contributeur
                                      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
                                      1. Contributeur
                                        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
                                        1. 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