Développement et bases de données
Quelles variables MySQL peuvent être modifiées sur un hébergement géré
MySQL distingue les variables globales, qui affectent tout le serveur, et les variables de session, qui ne s'appliquent qu'à une connexion. Dans une offre de cloud hosting géré, plusieurs comptes utilisent le même service MySQL : un compte ne dispose donc ni d'un accès root ni des privilèges administratifs nécessaires pour modifier les variables globales (SYSTEM_VARIABLES_ADMIN dans MySQL 8) et changer la configuration globale.
Portée des variables
Les buffers d'InnoDB, la limite totale de connexions et certains journaux sont gérés au niveau du serveur. max_allowed_packet a une valeur globale et une valeur de session, mais sa valeur de session est en lecture seule pour le serveur MySQL : elle ne s'augmente pas avec un SET SESSION depuis l'application. D'autres paramètres, comme certains modes SQL, délais d'attente ou jeux de caractères, peuvent avoir des valeurs globales et de session différentes.
Vous pouvez consulter les deux portées avec :
SHOW GLOBAL VARIABLES LIKE 'max_allowed_packet'; SHOW SESSION VARIABLES LIKE 'max_allowed_packet';
Variables de session
Certaines applications peuvent exécuter SET SESSION à l'ouverture de chaque connexion si MySQL permet de modifier cette variable. Le changement ne dure que le temps de cette session et doit être configuré dans le code, le framework ou le connecteur de base de données.
N'utilisez pas SET GLOBAL comme solution : cela échouera faute de droits ou affecterait d'autres comptes. Ne confondez pas non plus les limites PHP, comme memory_limit ou upload_max_filesize, avec des variables MySQL.
Alternatives
- Découpez les imports ou les requêtes volumineuses en lots.
- Vérifiez la compatibilité du mode SQL ; ne désactivez pas des validations uniquement pour masquer des données ou des requêtes incorrectes. Si le projet exige un réglage de session autorisé, testez-le d'abord.
- Corrigez les requêtes et les schémas qui consomment trop de mémoire ou de temps.
- Utilisez des tâches en ligne de commande pour éviter les limites du serveur web ou de PHP, en gardant à l'esprit que cela ne modifie pas les limites de MySQL lui-même.
- En cas de déconnexions pour inactivité, configurez la reprise de connexion et vérifiez quelle opération s'est terminée avant de la répéter. Une déconnexion ne prouve pas qu'une écriture a échoué.
- Vérifiez si une version actuelle de l'application évite l'exigence globale.
Avant d'écarter la compatibilité, envoyez-nous le nom de la variable, la valeur requise et la documentation du logiciel. Nous pouvons vérifier sa portée et évaluer s'il existe une alternative par session ou un réglage sûr sur le serveur, mais un changement global ne peut pas être garanti.
Si l'exigence s'avère incompatible avec un environnement mutualisé et nécessite des privilèges administratifs permanents, il faudra une infrastructure sous votre propre contrôle, comme un VPS ou un serveur dédié. Hostsuar ne propose pas ces environnements actuellement ; consultez les différences entre un VPS et notre cloud hosting.
Un SET SESSION exécuté dans phpMyAdmin ne modifie que cette connexion ; il ne change pas les sessions de votre site ni les futures connexions d'un pool. Consultez la portée et les droits de chaque variable pour la version que vous utilisez et vérifiez la valeur depuis l'application elle-même.
Cela peut aussi vous aider
- Créer des bases de données MySQL, des utilisateurs et des privilèges dans cPanel Créez une base de données MySQL dans cPanel, ajoutez son utilisateur, attribuez-lui tous les privilè...
- Créer une base de données et son utilisateur avec l'assistant de cPanel Créez une base MySQL, son utilisateur et l'association des privilèges depuis l'assistant de cPanel p...
- Arrêter des requêtes MySQL en cours d'exécution Listez les requêtes MySQL encore ouvertes et arrêtez-les avec KILL QUERY depuis le terminal, avec my...
- Cloner une base de données Dupliquez une base MySQL en créant d'abord la destination et ses privilèges dans cPanel, puis en cop...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.