impossible de se connecter : Can't connect to local MySQL server through sock
Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)
-OpenBSD 4.0
-mysql-server-5.0.24a
-php5-core-5.1.4p1
-Apache-1.3.29
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
[client]
#password = xxxxxxxxx
port = 3306
socket = /var/run/mysql/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
user = _mysql
port = 3306
socket = /var/run/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
[MySQL]
; Allow or prevent persistent links.
mysql.allow_persistent = On
; Maximum number of persistent links. -1 means no limit.
mysql.max_persistent = -1
; Maximum number of links (persistent + non-persistent). -1 means no limit.
mysql.max_links = -1
; Default port number for mysql_connect(). If unset, mysql_connect() will use
; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
; compile-time value defined MYSQL_PORT (in that order). Win32 will only look
; at MYSQL_PORT.
mysql.default_port =
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/run/mysql/mysql.sock
; Default host for mysql_connect() (doesn't apply in safe mode).
mysql.default_host =
; Default user for mysql_connect() (doesn't apply in safe mode).
mysql.default_user =
; Default password for mysql_connect() (doesn't apply in safe mode).
; Note that this is generally a *bad* idea to store passwords in this file.
; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
; and reveal this password! And of course, any users with read access to this
; file will be able to reveal the password as well.
mysql.default_password =
; Maximum time (in secondes) for connect timeout. -1 means no limit
mysql.connect_timeout = 60
; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
; SQL-Errors will be displayed.
mysql.trace_mode = Off |
Voilà pour le code.
J'arrive à me connecter en ligne de commande à la base de donnée et le serveur apache interprète correctement le code PHP. Je n'arrive pas à comprendre ce qui pourrait être à l'origine de l'echec de connexion au socket qui est bien créé quand je lance mysqld_safe (idem pour mysqld)
J'espère que vous pourrez m'aider à trouver une solution car là je viens d'y passer une paire d'heure. :aie: Je répond à toutes questions qui permettrait d'éclaircir mon problème.
[Résolu]Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock
Bon je trouve que la solution ne vallait pas le temps que j'ai passé pour la trouver ...
Apres un "ps -aux | grep httpd", j'ai eu la révélation quand j'ai remarqué que le process était chrooté sur /var/www/
Du coup, il ne pouvait avoir accès à /var/run/mysql/mysql.sock ... :aie:
Et dans la foulée je citerai Antoine dont vous pouvez retrouver son post : http://www.openbsd-france.org/ml/archives/msg00944.html
Citation:
Davy MOREL wrote:
> Iop tous,
>
>
> Ce mail est la suite de mon précédent problème avec apache, php et
mysql.
> J'ai pu configurer php avec apache sans problème et ça fonctionne. Mon
> seul soucis aujourd'hui est de pouvoir faire fonctionner phpmyadmin.
> J'arrive bien à la page d'acceuil mais j'ai :
> 2002 - Can't connect to local Mysql server through socket
> '/var/run/mysql/mysql.sock' (2)
Normal, apache est chrooté, il peut pas atteindre
/var/run/mysql/mysql.sock.
2 solutions :
- soit tu fais un lien de /var/run/mysql/mysql.sock vers
/var/www/var/run/mysql/mysql.sock
- soit (solution que je préfère), tu édites ton my.cnf pour qu'il crée
le mysql.sock directement dans le chroot apache (genre
/var/www/mysql/mysql.sock), et tu indiques dans ton php.ini et dans ton
config.inc le path vers mysql.sock, qui vu que la racine pour apache
c'est /var/www, sera : /mysql/mysql.sock
++
Antoine
J'ai choisi la première mais je suppose que l'autre fonctionne aussi bien. :yaisse2: