Mysql socket

Bonjour,

j'ai installé php,mysql et apache2. Tous fonctionne sauf lors des script php faisant appel au mysql j'ai une erreure lors de la connection qui me dit:
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/usr/local/mysql/tmp/' (13)


Pourtant mon socket mysql se trouve bien à cette endroit. Quelqu'un peut-il m'aider?

merci d'avance

10 réponses

  1. Contributeur
    Olivier,

    Profites-en aussi pour nous dire quelle est ta distribution Linux... et puis donnes nous le résultat de

    ps axl | grep mysql

    et

    mysql -p

    Dans une console sous root, histoire de vérifier que ton démon mysql est bien lancé.

    Dal
    1. il y a pas mal de sujets sur ce problème sur google, dis-nous les solutions que tu as déjà essayées afin qu'on ne répète pas ce que tu as déjà écrémé
      1. J'utilise linux mandrake 10.2 edition limited en dvd, sinon je n'ai pas encore essayer tes commandes mais je suis sur que mysql est lancé car j'arrive à voir les tables mysql par la console mais je vais essayer les commandes.
        1. [root@localhost ~]# ps axl | grep mysql
          4     0 17052     1  24   0   2576  1352 wait   S    pts/1      0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/localhost.pid
          4   501 17078 17052  18   0 360984 15052 select Sl   pts/1      0:00 /usr/local/mysql//libexec/mysqld --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/localhost.pid --skip-locking --port=3306 --socket=/usr/local/mysql/tmp/mysql.sock
          0     0 17088 17015  19   0   1936   732 -      R+   pts/1      0:00 grep mysql


          [root@localhost ~]# /usr/local/mysql/bin/mysql -u CrooOl -p mysql
          Enter password:
          Welcome to the MySQL monitor.  Commands end with ; or \g.
          Your MySQL connection id is 1 to server version: 4.0.25-log
          
          Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
          
          mysql>


          voila le résultat des commandes
          1. Webmaster
            Salut,

            A tout hasard, je sais que j'ai eu ce probléme, mais je ne sais plus comment ça c'est résolu, tu peux toujours tenter dans /etc/php.ini de mettre à la ligne:
            mysql.default_socket
            mysql.default_socket =mysql.sock

            Il se peut que php cherche un fichier mysql.socket par defaut.

            1. oui c'est bien sa le prob php prend mysql.socket par défault mais même avec mysql.sock dans php.ini sa ne change rien j'ai tjs dans mysql de phpinfo() la ligne
              MYSQL_SOCKET 	/usr/local/mysql/tmp/mysql.socket

              et c'est
              MYSQL_SOCKET 	/usr/local/mysql/tmp/mysql.sock
              qu'il faudrait. Comment faire alors que lors de la compilation j'ai déja mis
              --with-mysql-sock=/usr/local/mysql/tmp/mysql.sock
          2. ton firewall bloquerait pas le 3306 des fois?
            1. j'ai pas de firewall sur le réseau local donc je ne pense pas que ce serait sa et sur le routeur le port est ouvert pour le serveur actuel
          3. J'avance mais je ne suis pas encore au finale j'ai réussi à avoir les même socket dans php et mysql en changant dans my.cnf mais sa ne va tjs pas lors des connection mysql par php :-( .
            1. Contributeur
              Salut Olivier,

              Donc il semble bien que ton serveur MySQL soit lancé.

              Dans son paramétrage mysql permet de restreindre l'accès aux bases de données (y compris à la connexion) à certains utilisateurs seulement ou à certains hôtes seulement. As-tu spécifié des restrictions particulières ? Ton Apache est-il sur le même hôte que le serveur MySQL ?

              Voir http://www.databasejournal.com/features/mysql/article.php/3311731

              et les permissions définies dans les tables "user", "db", et "host".

              Dal

              PS : sur une autre piste... a tout hasard.. peux tu nous poster le résultat de
              ls -l /usr/local/mysql/tmp/mysql.sock*
              1. Bonjour,

                Pour ce problème, il suffit de trouver le chemin sur lequel se trouve le fichier mysql.sock
                Fichier trouveé dans "/usr/local/mysql/". Ensuite, vous créez un lien sur le répertoire "/tmp" avec la commande suivante:
                $ ln -s /usr/local/mysql/mysql.sock /tmp
                Et ça marche, vous avez plus à lancer la commande "mysql -uroot -p<password> --socket=/usr/local/mysql/mysql.sock";
                vous lancerez directement la commande "mysql -uroot -p<password>"

                Cordialement
                1. hum il ya un probleme MySQL a répondu:?

                  #1045 - Access denied for user 'root'@'localhost' (using password: NO)
                  pourtant , cand je vais dans la console il est indiquer que le mot de pass est le bon que faire :s?