Ubuntu est passé d'Upstart à Systemd dans la version 15.04 et ne respecte plus les limites dans /etc/security/limits.conf pour les services système. Ces limites s'appliquent désormais uniquement aux sessions utilisateur.
Les limites du service MySQL sont définies dans le fichier de configuration Systemd, que vous devez copier depuis son emplacement par défaut dans /etc/systemd, puis modifier la copie.
sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo vim /etc/systemd/system/mysql.service # or your editor of choice
Ajoutez les lignes suivantes au bas du fichier :
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Vous pouvez également définir une limite numérique, par exemple LimitNOFILE=4510
.
Rechargez maintenant la configuration de Systemd avec :
sudo systemctl daemon-reload
Redémarrez MySQL et il devrait maintenant obéir à la directive max_connections.
J'ai également eu des problèmes pour arrêter MySQL proprement après la mise à niveau vers 15.04. Si cela vous affecte (vous le saurez car cela prendra 300 secondes pour expirer lorsque vous ferez service mysql stop
ou service mysql restart
) puis ajouter la ligne suivante au même fichier /etc/systemd/system/mysql.service l'a corrigé pour moi :
ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown
Ce dernier problème semble avoir été résolu par 16.04 et cette ligne n'est plus nécessaire, donc avant de faire une mise à jour de la distribution, vous voudrez arrêter MySQL et supprimer le ExecStop
ligne du fichier de configuration.