Problème de connexion php->mysql avec lighttpd

Bonjour à tous,

(le post est un peu long, j’ai essayé de mettre en valeur ce qui me semblait important)
Je me décide à poster mon problème dans ce forum, qui m’a déjà un peu aidé lors de la configuration de mon premier serveur personnel. J’ai acheté un plug computer le mois dernier et installé dessus notamment de quoi faire tourner un webmail : Debian, lighttpd, mysql, phpmyadmin, postfix, courier, roundcube.

Cela marchait bien pendant une semaine, puis après un reboot des ennuis ont commencé. D’abord de petits problèmes, je ne sais plus lesquels, j’ai du relancer lighttpd et mysql à la main, puis depuis je n’arrive pas à accéder à ma base mysql, mais seulement depuis des pages php.

J’ai d’abord fouillé partout parce que roundcube avait une ‘database error’ qui me semblait particulière ; le log montrait

[08-Feb-2011 13:46:33 +0100]: DB Error: _doConnect: [Error message: Access denied for user 'my_debian_login'@'localhost' (using password: NO)] [Native code: 1045] [Native message: Access denied for user 'my_debian_login'@'localhost' (using password: NO)] ** mysql(mysql)://roundcube:xxx@localhost/roundcubemail in /var/www/webmail.backup/program/include/rcube_mdb2.php on line 101 (GET /webmail.backup/)
alors que la chaine de connexion de roundcube dans db.inc.php mentionnait

database connection string in db.inc.php : $rcmail_config['db_dsnw'] = 'mysql://roundcube:roundcube_password@localhost/roundcube';
–> roundcube (est-ce le seul?) ne semble pas utiliser le bon compte pour la connexion à la BDD, sans que j’arrive à trouver pourquoi.

Aujourd’hui, je me suis dit que je pourrais tester d’autres appli web pour voir s’ils connaîtraient le même problème. J’ai donc essayer d’installer wordpress, avec comme paramètre de connexion un nouveau login de connexion, un nouveau mot de passe, et des droits sur la nouvelle base wordpress (vide pour l’instant). Mais l’installation ne se fait pas, car “Erreur lors de l’établissement de la connexion à la base de données”. Quelle surprise…

J’ai essayé ensuite quelque chose de plus simple, avec la page de test php présente là http://wiki.auto-hebergement.fr/dokuwiki/serveurs/lighttpd#installation_de_mysql_avec_php5. Là aussi, la connexion à mysql ne se fait pas via php, avec le compte et le mdp root, alors que j’arrive bien sûr à y accéder via les commandes mysql dans le bash et via phpmyadmin.

J’ai à mon sens peu d’éléments dans les logs:

  • dans les logs d’erreur mysql:

Found invalid password for user: 'webmin@127.0.0.1'; Ignoring user alors que je n’ai aucun endroit dans mes fichiers de configuration où ce user est sensé se connecter

  • le socket utilisé par mysql :

/usr/sbin/mysqld, Version: 5.1.49-3-log ((Debian)). started with: Tcp port: 3306 Unix socket: /var/run/mysqld/mysqld.sock

  • dans les logs d’erreur de lighttpd, des trucs louches qui ne me parlent pas vraiment :

2011-02-07 19:31:16: (mod_fastcgi.c.1734) connect failed: No such file or directory on unix:/var/run/lighttpd/php-fastcgi.socket-3 2011-02-07 19:31:16: (mod_fastcgi.c.3027) backend died; we'll disable it for 1 seconds and send the request to another backend instead: reconnects: 0 load: 1 2011-02-07 19:31:38: (mod_fastcgi.c.1734) connect failed: No such file or directory on unix:/var/run/lighttpd/php-fastcgi.socket-2 2011-02-07 19:31:38: (mod_fastcgi.c.3027) backend died; we'll disable it for 1 seconds and send the request to another backend instead: reconnects: 0 load: 2 2011-02-07 19:31:40: (mod_fastcgi.c.1734) connect failed: No such file or directory on unix:/var/run/lighttpd/php-fastcgi.socket-1 2011-02-07 19:31:40: (mod_fastcgi.c.3027) backend died; we'll disable it for 1 seconds and send the request to another backend instead: reconnects: 0 load: 3
(j’ai eu plusieurs fois des blocs similaires à ce dernier)

2011-02-08 17:01:04: (http_auth.c.867) get_password failed, IP: 192.168.1.67
(192.168.1.67 est l’ip de mon pc de bureau avec lequel je me connecte au serveur)

2011-02-09 13:30:35: (mod_fastcgi.c.2701) FastCGI-stderr: PHP Notice: mysql_connect() [<a href='http://fr.php.net/manual/fr/function.mysql-connect'>function.mysql-connect</a>]: SQL safe mode in effect - ignoring host/user/password information in /var/www/test.php on line 7 PHP Warning: mysql_connect() [<a href='http://fr.php.net/manual/fr/function.mysql-connect'>function.mysql-connect</a>]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111) in /var/www/test.php on line 7

Sinon j’ai aussi desfois ça quand je tripatouille mysql (mais je ne pense pas que cela soit significatif):

Checking for corrupt, not cleanly closed and upgrade needing tables..

J’ai fail2ban et iptables de configuré, mais ça m’a l’air ok.

J’ai réinstaller mysql depuis, mais ça n’a rien réglé.

Merci pour tout indice que l’un de vous pourra peut-être trouver.

Octav

Quand je vois :

Pour moi sa veut dire que le fichier n’existe pas. Vérifie, et s’il n’existe pas, créer le. (Cela ne résoudra pas ton soucis mais pourra peut-être contribué).

Et te souviens tu de la dernière chose que tu as faite/modifié avant que ton système ne fonctionne plus?

Il existe, j’ai oublié de précisé

/var/run/lighttpd# ls -l total 0 srwxr-xr-x 1 www-data www-data 0 Feb 9 14:23 php-fastcgi.socket-0 srwxr-xr-x 1 www-data www-data 0 Feb 9 14:23 php-fastcgi.socket-1 srwxr-xr-x 1 www-data www-data 0 Feb 9 14:23 php-fastcgi.socket-2 srwxr-xr-x 1 www-data www-data 0 Feb 9 14:23 php-fastcgi.socket-3

Là dernière chose que j’ai faite, c’était de redémarrer.

Il y a un autre truc aussi, c’est que j’ai Debian est installé sur une carte SD, et donc pour éviter trop d’écriture j’ai certains fichiers qui sont écrits en tmpfs ou dans la ram, et donc qui sont nettoyés au redémarrage. Cela peut donc être lié au problème.
Liste de ces fichiers (glanée au fil de conseils sur des forums et tutoriaux):
/var/lib/dhcp
/var/lib/php5
/var/lib/misc
/var/lib/ntp
/var/lib/urandom
/tmp
/var/tmp
/var/run
/var/lock

(la date de création des php-fastcgi.socket* est la date du dernier reboot, car j’ai certains répertoires qui sont stockés en ram puis synchroniser sur le disque lors des reboot et commande de synchro - c’est le logiciel flashybrid pour ceux qui connaissent)

Et chaque fois que roundcube, wordpress ou le script php utilisant

essaye de se connecter à la base mysql, j’ai cette erreur dans les logs mysql.log (octav est mon login Debian):

Je pense que tout le problème vient de là, mais je ne sais pas d’où ça peut venir…

En activant les logs qu’il faut et en passant de message d’erreur en message d’erreur, j’ai fini par trouver le responsable.
En fait c’est du à des manip de sécurisation du php.ini que j’avais faite le week-end dernier, apparement sans redémarrer lighttpd entre temps : du coup ce n’est seulement après le reboot que l’effet a eu lieu, et donc que mon roundcube ne pouvait plus se connecter à mysql.
Le fautif :
sql.safe_mode = On
dans le /etc/php5/cgi/php.ini
Ca m’apprendra (enfin j’espère :083 ) à redémarrer les programmes où je fais des modif…

Merci tout de même :slightly_smiling: