Difference between revisions of "MySQL"
(6 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
Le code d'erreur 13 signifie "Permission denied". |
Le code d'erreur 13 signifie "Permission denied". |
||
− | Si ce |
+ | Si ce message d'erreur survient dans un script PHP éxécuté sous Apache, essayer d'éxécuter le script suivant en tant qu'usager root et en tant qu'usager du serveur web: |
+ | <pre> |
||
<?php |
<?php |
||
$connection = mysql_connect('localhost', 'user', 'password', 'database'); |
$connection = mysql_connect('localhost', 'user', 'password', 'database'); |
||
Line 14: | Line 15: | ||
} |
} |
||
?> |
?> |
||
+ | </pre> |
||
+ | |||
+ | Si ça ne fonctionne que sous root, c'est que l'usager web (www dans mon cas) n'a pas les droits suffisants pour accéder au socket de MySQL. Il faut alors permettre l'accès au socket mysql par le groupe mysql: |
||
+ | |||
+ | <pre> |
||
+ | > chmod g+rwx /var/run/mysql |
||
+ | > ls -al /var/run/mysql |
||
+ | total 512 |
||
+ | drwxrwx--- 2 mysql mysql 80 2008-09-10 21:48 . |
||
+ | drwxr-xr-x 8 root root 888 2008-09-09 00:49 .. |
||
+ | srwxrwxrwx 1 mysql mysql 0 2008-09-10 21:48 mysql.sock |
||
+ | </pre> |
||
+ | |||
+ | et ajouter l'usager web au groupe mysql: |
||
+ | |||
+ | <pre> |
||
+ | mysql:x:102:www |
||
+ | </pre> |
||
+ | |||
+ | = Désactiver l'accès à MySQL par TCP/IP = |
||
+ | |||
+ | Si tous les accès à la base de données MySQL se font par le serveur web uniquement, on peut désactiver les accès TCP/IP pour MySQL en ajoutant l'option suivante au fichier /etc/my.cnf: |
||
+ | |||
+ | skip-networking |
||
+ | |||
+ | |||
+ | |||
+ | = Reset password MySQL Debian = |
||
+ | |||
+ | set password for `debian-sys-maint`@localhost=password('xxxxxxxxxx'); |
Latest revision as of 12:22, 2 April 2019
Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (13)
Le code d'erreur 13 signifie "Permission denied".
Si ce message d'erreur survient dans un script PHP éxécuté sous Apache, essayer d'éxécuter le script suivant en tant qu'usager root et en tant qu'usager du serveur web:
<?php $connection = mysql_connect('localhost', 'user', 'password', 'database'); if (mysql_errno()) { printf("Connection failed: %s\n", mysql_error()); } else { printf("Connection succeeded\n"); } ?>
Si ça ne fonctionne que sous root, c'est que l'usager web (www dans mon cas) n'a pas les droits suffisants pour accéder au socket de MySQL. Il faut alors permettre l'accès au socket mysql par le groupe mysql:
> chmod g+rwx /var/run/mysql > ls -al /var/run/mysql total 512 drwxrwx--- 2 mysql mysql 80 2008-09-10 21:48 . drwxr-xr-x 8 root root 888 2008-09-09 00:49 .. srwxrwxrwx 1 mysql mysql 0 2008-09-10 21:48 mysql.sock
et ajouter l'usager web au groupe mysql:
mysql:x:102:www
Désactiver l'accès à MySQL par TCP/IP
Si tous les accès à la base de données MySQL se font par le serveur web uniquement, on peut désactiver les accès TCP/IP pour MySQL en ajoutant l'option suivante au fichier /etc/my.cnf:
skip-networking
Reset password MySQL Debian
set password for `debian-sys-maint`@localhost=password('xxxxxxxxxx');